Quando utilizar mock ?  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
mateusbrum
JavaBaby
[Avatar]

Membro desde: 21/01/2007 22:55:29
Mensagens: 84
Offline

Boa tarde pessoal!

Tenho algumas dúvidas um tanto quanto delicadas sobre a utilização dos mocks para testes unitários.

Vejamos:
1 - Caso eu tenho um objecto colaboradora e esse colaborador apesar de complexo é de simples acesso, devo criar um mock para o mesmo ?
2 - Caso não crie um mock e utilize o objecto real, é caracterizado teste de integração?
3 - Devo considerar todos os objectos colaboradores reais correctos (funcionalmente correctos), e não me preocupar com eles para testar minha unidade ?
4 - Há casos que tenho vários objectos colaboradores com várias dependências, como lido com essa situação caso seja necessário sempre utilizar mock para isolar a unidade ?
5 - Unidades que usam objectos reais não estão completamente isoladas ?

Resumindo, quando utilizar mocks e quando utilizar objectos reais, quais as vantagens e desvantagens?

Obrigado!

Mateus Henrique Brum
Analista Programador Java

Sun Certified Java Programmer 6.0
Sun Certified Web Component Developer 5.0
[Email]
Adolfo Rodrigues
Java Ninja
[Avatar]

Membro desde: 18/04/2007 20:02:52
Mensagens: 270
Localização: Sampa
Offline

Na maioria dos casos, quando está testando unitariamente uma classe que possui dependências. O mock te ajuda a isolar o comportamento da unidade de trabalho que você está testando.

http://www.adolfosousa.com.br/blog
[WWW] [MSN]
mateusbrum
JavaBaby
[Avatar]

Membro desde: 21/01/2007 22:55:29
Mensagens: 84
Offline

Certamente. Mas isso me leva a alguns problemas relatado anteriormente, como quantidade de código codificado.
Não seria melhor utilizar o objecto real quando possível?

Mateus Henrique Brum
Analista Programador Java

Sun Certified Java Programmer 6.0
Sun Certified Web Component Developer 5.0
[Email]
marcelo_mococa
Virtual Machine Man
[Avatar]

Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline

Em minha opinião, você deve isolar totalmente as dependências.
Dependendo da arquitetura e granularidade de suas classes, você terá muitos mocks.
Se você tiver que criar poucos ou nenhum mock, analise seu código, talvez ele esteja pouco coeso e precise ser refatorado.

Se você utilizar uma referência para o objeto real, você estará fazendo um teste de integração e não mais de unidade.

att.
Marcelo


Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog

peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline



Eu posso fazer um teste aonde eu crio um mock da ClasseASerMockada. Isso é util pois o meu método deve funcionar de acordo com o que eu espero da ClasseASerMockada.

Eu posso fazer um segundo teste aonde a ClasseASerMockada é a classe real, ai eu testo a integração das classes e o seu comportamento como um todo.

Ao meu ver são 2 situações distintas e complementares, um teste unitário e um teste de integração.

http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team