Tenho um sistema totalmente back-end que expõe beans EJB para seus clientes.
Existem algumas integrações dentro deste sistema, como por exemplo um bean EJB
chamar um outro bean EJB em outro módulo.
Gostaria de saber como poderia fazer testes integrados deste sistema simulando o
comportamento do container EJB, mas “mockando” a camada de DAO.
Gostaria de testar o Bean A chamando o Bean B, inclusive vendo se o Bean B cria uma nova
transação ou mantém a transação do Bean A, porém, eu não quero usar o banco de dados, porque
fazer teste usando banco de dados é um saco, ainda mais com o tamanho da nossa base aqui.
Alguém já precisou fazer algo parecido? Aceito sugestões!
Acho que “Teste de integração” é um termo muito amplo para decidir onde rodar isso ou aquilo.
Eu poderia testar a integração de duas classes de negócio, onde nenhuma das duas utilizam recursos de um AS ou banco de dados. Para tal não faz sentido roda-lo no ambiente servidor.
Para testes de aceitação, estes sim devem rodar sem dúvida em um ambiente o mais próximo possível da produção: - em um servidor de aplicação, conexões de banco, filas de mensagens e etc.
Depende. Eu faço testes funcionais, com transações, em Façades de Seam Component com o Jboss MC (embeddable) e realizo os testes de aceitação no servidor.
Para esclarecer, o Jboss MicroContanier é um servidor tão quanto o JBoss Microkernel foi … ou seja, não é. Ele é usado pelo App Server, mas não é um. Na verdade ele se assemelha muito mais a Spring do que a JBoss. O problema é o pé que o projeto esta hoje. Ainda esta lento (embora na minha máquina ele não demore mais de 8 segundos), e alguns bugs realmente atrapalham.