O que vocês estão fazendo pra tratar massa de dados para testes?
11 respostas
J
JavaTux
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?
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
JavaTux
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.
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
JavaTux
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.