Eu tenho um servidor de CI (Hudson) que cria alegremente, executa testes de unidade e implanta no ambiente de desenvolvimento, mas agora gostaria de executá-lo nos testes de integração.
Os testes de integração atingirão um banco de dados e esse banco de dados será constantemente alterado para conter os dados relevantes para o teste em questão. No entanto, isso leva a um problema - como garantir que o banco de dados não esteja sendo preenchido com dados para um teste e que esses dados sejam substituídos por um segundo projeto antes da conclusão do primeiro conjunto de testes?
Atualmente, estou usando o método "esperança", que não está funcionando muito mal no momento, mas principalmente devido ao fato de termos apenas um pequeno número de testes de integração configurados no IC.
A meu ver, tenho as seguintes opções:
- Bancos de dados locais de teste (na memória)
Não tenho certeza se algum banco de dados na memória lida com todos os aspectos assustadores dos gatilhos e pacotes do Oracles, etc. - Bancos de dados locais do executor de IC
Seria necessário um bom trabalho para configurá-lo e mantê-lo atualizado, mas uma opção desafiadora (a maior parte do trabalho já foi feita para manter o banco de dados de CI atual atualizado). - Executor único de "teste de integração"
Provavelmente o mais fácil de implementar, mas significaria que os testes de integração poderiam ficar muito para trás. - Bloqueando o banco de dados (ou conjunto de tabelas)
Tenho certeza de que perdi algumas maneiras (adicione-as). Como você executa testes de integração baseados em banco de dados no servidor de IC? Quais problemas você teve e qual método você recomenda? (Observação: enquanto eu uso o Hudson, fico feliz em aceitar respostas para qualquer servidor de IC, as idéias, com certeza, serão portáteis, mesmo que os detalhes não sejam).
Cheers,
Mlk