O que vocês estão fazendo pra tratar massa de dados para testes?

11 respostas
J

Galera como vocês estão abordando em relação a massa de dados de testes no banco de dados…

Estou testando meus métodos DAOs com hibernate e fazendo teste integração. Mas estou com dúvida na melhor abordagem a seguir, pois preciso fazer testes e sempre preciso que várias tabelas estejam com dados, mas depois dos testes preciso limpar o banco todo para posterior testes…

Como fazem o “prepare” antes dos testes?

Fazem um SQL com todos inserts e carregam pelo java o script?

Fazem um XML com os dados representando as entidades, carregam esses dados e inserem no banco?

Como estão abordando a respeito?

deixem vossas experiências…

11 Respostas

celso.martins

Normalmente, eu possuo a massa em script (INSERTs).

Rodo o script pelo Toad no Oracle e pelo pgAdmin no PostgreSQL.
Porque rodaria pelo Java?

peczenyj

depende das Fixtures!

Jair_Rillo_Junior

falae JavaTux,

Primeiro, você tem uma base só para esse tipo de testes, certo? De preferência local…

Usando o Hibernate, você pode fazer um drop-create toda vez que a aplicação executar (assim os dados serão excluídos) e uma massa de dados (em objetos) para fazer os inserts. Essa massa de dados pode ser reaproveitada para vários testes…

Fica ai a dica.

celso.martins

Vivendo e aprendendo.

Valeu a dica.

EDIT: Pergunta retirada… sei que, provavelmente, será mais um vácuo.
E viva os semi-deuses do Olimpo!!!

J

celso.martins:
Normalmente, eu possuo a massa em script (INSERTs).

Rodo o script pelo Toad no Oracle e pelo pgAdmin no PostgreSQL.
Porque rodaria pelo Java?

citei pelo java só pelo motivo de deixar o .sql dentro de uma pasta test/resources e o desenvolvedor quiser alterar o script ali dentro do ambiente, mas só firula mesmo pra não ter que ir no pgadmin e executar o script, antes do testes eu já mando o java executar via jdbc.

Jair Rillo Junior:
falae JavaTux,

Primeiro, você tem uma base só para esse tipo de testes, certo? De preferência local…

Usando o Hibernate, você pode fazer um drop-create toda vez que a aplicação executar (assim os dados serão excluídos) e uma massa de dados (em objetos) para fazer os inserts. Essa massa de dados pode ser reaproveitada para vários testes…

Fica ai a dica.

Tem uma base sim só testar.
Entendi o lance do drop-create, agora na prática, não entendi como seria essa massa de dados em objetos, poderia me esclarecer?

Seria um digamos uma grande classe de teste com todos objetos persistentes instanciados um a um e em seguida aí fazer o save de todos eles pelo hibernate?

Obrigado a todos pelas dicas foram de grande valia.

jgbt

DbUnit

[]´s

Jair_Rillo_Junior

Ao invés de ter vários INSERTs, você teria vários objetos populados e faria o “insert” pelo Hibernate (session.save()), entendeu?

Supondo que em N testes você precisa do mesmo objeto Clientes populado, assim fica mais fácil para reaproveitar os dados.

J

jgbt:
DbUnit

[]´s

Esse dbunit o fundamento dele seria guardar as entidades em xml, ai vc recupera e depois salva no banco de dados?
Seria digamos uma fonte fixa dos dados…?

Jair Rillo Junior:
Ao invés de ter vários INSERTs, você teria vários objetos populados e faria o “insert” pelo Hibernate (session.save()), entendeu?

Supondo que em N testes você precisa do mesmo objeto Clientes populado, assim fica mais fácil para reaproveitar os dados.

Valeu cara, foi o que imaginei inicialmente, vou considerar essa opção.

jgbt

Na verdade nao as entidades, mas os dados necessarios para realizar o teste. Tendo os dados, vc trabalha com eles como quiser.
Vc pode ter varios arquivos para diferentes cenarios. Vc pode configurar para que antes de cada teste a base seja limpa e insere os valores de um determinado arquivo, por exemplo. Com isso vc garante o estado do bd e nao fica dependente disso.
Os arquivos sao xml’s muito simples, vc pode ate gerar eles a partir de dados de uma base qualquer.

[]´s

J

jgbt:
JavaTux:

Esse dbunit o fundamento dele seria guardar as entidades em xml, ai vc recupera e depois salva no banco de dados?
Seria digamos uma fonte fixa dos dados…?

Na verdade nao as entidades, mas os dados necessarios para realizar o teste. Tendo os dados, vc trabalha com eles como quiser.
Vc pode ter varios arquivos para diferentes cenarios. Vc pode configurar para que antes de cada teste a base seja limpa e insere os valores de um determinado arquivo, por exemplo. Com isso vc garante o estado do bd e nao fica dependente disso.
Os arquivos sao xml’s muito simples, vc pode ate gerar eles a partir de dados de uma base qualquer.

[]´s

Muito esclarecedora sua resposta, estou lendo o site dele e parece bem interessante. Só o “ruim” que ele não mapeia para objetos e sim para tabelas. Quanto ao gerar o xml a partir da base de dados é feito a partir do próprio DBUnit? Procurei no site dele e não consegui encontrar como fazer isso, pode me sugerir algum link pra eu gerar esse xml?

jgbt

JavaTux:

Muito esclarecedora sua resposta, estou lendo o site dele e parece bem interessante. Só o “ruim” que ele não mapeia para objetos e sim para tabelas. Quanto ao gerar o xml a partir da base de dados é feito a partir do próprio DBUnit? Procurei no site dele e não consegui encontrar como fazer isso, pode me sugerir algum link pra eu gerar esse xml?

Que eu saiba não tem nada p/ gerar os arquivos, mas nada que meia duzia de linhas de codigo não façam.

[]´s

Criado 19 de maio de 2009
Ultima resposta 20 de mai. de 2009
Respostas 11
Participantes 5