Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exemplos de Teste Unitários com Java EE 7 e Demoiselle 3 #82

Open
jimycoelho opened this issue Jun 28, 2017 · 1 comment
Open

Exemplos de Teste Unitários com Java EE 7 e Demoiselle 3 #82

jimycoelho opened this issue Jun 28, 2017 · 1 comment

Comments

@jimycoelho
Copy link

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 {

@Inject
private TipoUnidadeBC bc;

...

}

public class TipoUnidadeBCImpl extends AbstractBusiness<TipoUnidade, Integer> implements TipoUnidadeBC {

@Inject
private TipoUnidadeDAO dao;

....

}

public class TipoUnidadeDAOImpl extends AbstractDAO<TipoUnidade, Integer> implements TipoUnidadeDAO {

@PersistenceContext(unitName = "sgu")
private EntityManager em;

...

}

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.

@mestihudson
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants