Open jimycoelho opened 7 years ago
Penso que os testes conectados à base (testes de integração), não tem jeito, são realmente mais complicados, mais lentos e inclusive sujeitos a particularidades das tecnologias envolvidas (em produção usam um mecanismo diferente, que pode ser, precariamente, simulado com Arquillian - desconheço quem os utiliza além dos exemplos 'happiness path' existentes no site da ferramenta, mas confesso que não passa de ignorância minha e não tenho amostra suficiente para fazer afirmações mais agressivas).
No entanto, no quesito testes unitários podem (e "devem", se incluírem computação, o que excluí classes tais como VO/DTOs e Delegates/Facades) ser realizados (o que inclui qualquer objeto que não chegue a borda da aplicação, acessando suas dependências externas - banco, http, ldap, jms, email, etc). Mock é só um dos mecanismos de Test Double que existem, mas são os mais populares.
A exemplo do que você citou, por exemplo, é possível testar o BC usando Mockito (http://blog.caelum.com.br/facilitando-seus-testes-de-unidade-no-java-um-pouco-de-mockito/) para injetar os DAOs, e outras dependências marcadas com @Inject
, para testar de forma isolada esse tipo de objeto, onde geralmente está a inteligência do sistema.
Estamos implementando um projeto no SERPRO com Java EE 7 usando Demoiselle 3. Construímos o projeto segundo o roteiro: https://demoiselle.gitbooks.io/documentacao-jee/content/roteiro_rapido.html e usamos o wildfly-10.1.0.Final.
E temos a seguinte estrutura
@ApplicationScoped @Path("tipo-unidade") public class TipoUnidadeRest {
...
}
public class TipoUnidadeBCImpl extends AbstractBusiness<TipoUnidade, Integer> implements TipoUnidadeBC {
....
}
public class TipoUnidadeDAOImpl extends AbstractDAO<TipoUnidade, Integer> implements TipoUnidadeDAO {
...
}
E tudo está funcionando perfeitamente, mas estou com dificuldade em fazer testes unitários. Eu gostaria de fazer os seguintes testes: teste conectando na base, teste mockando o DAO e teste de beans validation. Dos exemplos disponibilizados não encontrei nada que atendesse as minhas necessidades. O que encontrei na internet é o uso do demoiselle-junit para Demoiselle 2, mas que não funcionou no Demoiselle 3. Para teste conectado encontrei isso: http://www.devmedia.com.br/testes-de-integracao-utilizando-cdi-jpa-e-ejb-e-arquillian/33340 Que além de demorado pois tem que subir o container, também passa a não funcionar quando estendemos as classes do Demoiselle.
Gostaria que disponibilizassem exemplos de testes unitários de beans validations, que conectam na base e que fazem mock do DAO usando Demoiselle 3. Uma sugestão é incrementar os exemplos disponibilizados para contemplar os testes unitários requeridos.