Estou tentando montar uma aplicação simples para copiar dados de um banco de dados para outro, mas quero fazer de forma que seja bem genérico, usando JDBC e acessando diversos bancos e tabelas diferentes, tudo parametrizável.
Quero criar todo o código com seus respectivo teste feito antes (TDD), porém estou com uma dúvida, os testes devem rodar em qualquer máquina e serem independentes, mas logo de cara preciso efetuar um conexão ao banco para testar o método de conexão, mas isto cria uma dependência com o banco de dados, pois ele deve existir e estar “ligado” na máquina. Existe alguma forma conhecida de eu “mockar” um banco de dados ou simular junto aos testes?
Lembrando que deve realmente ser um banco de dados preferenciamente acessado por JDBC (mesmo que o banco por si só seja simulado, como o SQLite), pois após isso, pretendo acessar os metadados do banco.
Cara, esse é o típico caso em que eu acho bobagem “forçar” teste unitários. Ao invés de mockar seus bancos de dados, utilize um banco de dados real e faça testes de integração. Pode até ser um banco que rode em memória, como o Derby ou o HSQLDB, mas use um banco.
Valeu cara, vou tentar usar esses recursos mesmo. Dei uma olhada em um outro exemplo para pegar os Metadados do banco de dados e ele usava o hsqldb, acho que vou tentar me iniciar nele.
Então cara, era realmente isso que eu estava querendo, não devo ter sido claro na minha questão. O ponto é que como é uma aplicação muito dependente do banco de dados, afinal é voltada para ele, eu preciso que ele realmente exista. Quando eu falei em mockar o banco, a minha intenção era ter um banco de dados com todas as informações, mas que não fosse necessário de servidor, algo rodando em memória. Por um momento pensei em usar até o SQLite, mas achei custoso ficar criando arquivo toda hora, por isso vou usar as soluções em memória que vocês citaram.