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!
Porque eu queria poder executar estes testes sem a necessidade de ter um ambiente com servidor de aplicação up
Os testes poderiam ser executados via maven por exemplo.
E pq o Maven te impediria de fazer os testes dentro do AS?
R
Rubem_Azenha
Para testes integrados, o mais correto não seria rodar no AS mesmo, sem mockar nada? Com um ambiente semelhante ao ambiente de produção?
A
andre_salvati
Sim, é o que eu tb acho. E o teste dentro do container ainda simplifica bastante sua vida.
Hoje eu uso Maven + plugins do Maven + JBoss AS + JBoss ESB + testes de integração em componentes tranquilamente.
A
Alessandro_Lazarotti
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.
A
andre_salvati
No contexto do nosso amigo acho melhor a “integração” dentro do servidor. Lembre-se que ele precisa testar transações.
A
Alessandro_Lazarotti
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.
A
andre_salvati
Oras, e desde quando o JBoss 5 (MC de MicroContainer para os curiosos) deixou de ser servidor/container?
Não vejo diferença entre um teste “funcional” no 4.2.2 ou no 5 (20 segundos?).
Além disso, prefiro testar com as versões/configurações idênticas aos ambientes de homologação/produção …
A
Alessandro_Lazarotti
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.