| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/08/2009 13:28:20
|
magnomp
JavaBaby
Membro desde: 21/07/2009 12:43:00
Mensagens: 77
Offline
|
Estou desenvolvendo uma aplicação web usando Mentawai...
Preciso escrever testes para uma Action que possui alguns atributos privados que são instancias dos meus repositorios...
ex:
Em produção, posso usar o recurso de injeção de dependencias do menta para instanciar o repositorio e colocar na minha variável de instancia clienteRepositorio.
Mas em ambiente de testes, preciso colocar ali um "mock" do repositório. Pensei em em aumentar a visibilidade da variável (package ou protected), e no teste eu coloco algo ali manualmente... Ex:
Aí vem minha dúvida: Eu faria essa mudança meramente para viabilizar os testes. Isso deveria ser evitado, na opinião de vcs?
Recomendam alguma outra alternativa?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/08/2009 14:35:33
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20576
Localização: Curitiba/PR
Offline
|
Por que não usa os recursos de injeção de dependencia do menta para injetar o mock durante os testes?
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/08/2009 14:56:32
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
ViniGodoy wrote:Por que não usa os recursos de injeção de dependencia do menta para injetar o mock durante os testes?
Por que infelizmente não é tão simples assim usar os recursos de injeção de dependência do menta fora de forma "standalone".
O jeito é criar um setter (não é muito legal, mas ninguém vai morrer por causa disso).
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/08/2009 17:11:51
|
Ferryman
JavaGuru
![[Avatar]](/images/avatar/2e3907cbad887e6a1bea84d450b756db.jpg)
Membro desde: 26/10/2006 16:30:23
Mensagens: 220
Offline
|
É aceitável sim.
O argumento que eu sempre uso quando me fazem essa pergunta é: Para testar, o código precisa estar desacoplado (usar DI etc). Se ele não está desacoplado, fica difícil de testar, portanto, se você não consegue fazer o teste, significa que seu código precisa de um refactoring.
TDD ajuda muito nesse ponto, pois se você escreve seu teste primeiro, obrigatóriamente vai estar escrevendo código testável.
[]s
|
Rafael Farias Silva (@rafaferry)
Jsigner - Engenharia reversa automática através do maven. Acesse http://code.google.com/p/jsigner |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/08/2009 18:05:42
|
Jair Rillo Junior
Moderador
![[Avatar]](/images/avatar/31b3b31a1c2f8a370206f111127c0dbd.jpg)
Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline
|
Você pode "injetar" como o Rubens disse, criando um método set e no seu teste unitário injetando o mock por ele. Eu particularmente uso muito esse approach.
Outra solução (porém na minha opinião é pior) é criar uma Factory para te retornar esse Repositório, assim, no seus testes, quando a Action chamar a Factory, ela retorna o Mock para você.
|
Jair Rillo Junior
http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2009 08:22:20
|
Jorge Diz
JavaChild
Membro desde: 13/03/2008 09:39:28
Mensagens: 104
Offline
|
Ferryman wrote:É aceitável sim.
O argumento que eu sempre uso quando me fazem essa pergunta é: Para testar, o código precisa estar desacoplado (usar DI etc). Se ele não está desacoplado, fica difícil de testar, portanto, se você não consegue fazer o teste, significa que seu código precisa de um refactoring.
TDD ajuda muito nesse ponto, pois se você escreve seu teste primeiro, obrigatóriamente vai estar escrevendo código testável.
[]s
+1
Eu sou mais enfático: o termo "aceitável" passa a idéia de que vc está fazendo algo que geralmente
é errado mas que pode ser relevado em certos casos.
Para mim, o design deve necessariamente incluir ganchos para o teste ser feito de maneira simples
e eficaz.
Não é apenas aceitável, é fundamental.
[]s
Jorge Diz
|
|
|
 |
|
|