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
Respostas:
Apenas uma ideia, já que eu nunca fiz isso, mas você pode configurar uma tarefa para obter o DDL para o esquema do banco de dados contra o qual está testando e recriá-lo na memória ou em outro banco de dados. Parece que é bastante simples no Oracle. Em seguida, você pode gerar automaticamente o novo banco de dados sempre que ele for alterado.
Parece que a Oracle tem um banco de dados em memória chamado TimesTen . Pode valer a pena olhar. Eu preferiria definitivamente usar um banco de dados na memória, se possível, pois geralmente é mais rápido que o armazenamento rígido.
fonte
Executamos testes de integração baseados em banco de dados, levantando um servidor de banco de dados para trabalhar com a caixa de IC e hospedar a instância de IC. Como o armazenamento temporário e a produção cada um tem seu próprio servidor de banco de dados.
fonte