Estou procurando começar com objetos em meus testes de unidade. Parece que existem toneladas de boas estruturas de zombaria por aí.
- As diferentes estruturas têm diferentes públicos-alvo?
- Que fatores devo considerar ao escolher qual estrutura é adequada para minha situação?
Respostas:
As diferentes estruturas têm diferentes públicos-alvo?
Sim. Algumas estruturas, como Microsoft Moles , TypeMock Isolator e JustMock , permitem que você possa zombar de qualquer coisa. Essas ferramentas de simulação geralmente são melhores para os desenvolvedores que desejam usá-las no código legado existente, pois pode não ser possível refatorá-lo para um design mais testável. *
Tradicionalmente, os projetos testáveis significam que a base de código precisa fazer uso liberal de interfaces, classes abstratas, métodos virtuais, classes não seladas etc. Portanto, as estruturas de simulação tradicionais como Moq e RhinoMocks funcionam bem com o código desenvolvido usando Test Driven Development, Injection Dependency e outros conceitos. A propósito, eu recomendo o uso da Injeção de Dependência à medida que você ganha muito mais do que apenas código testável, mas também código mais sustentável.
Que fatores devo considerar ao escolher qual estrutura é adequada para minha situação?
* Consulte Trabalhando efetivamente com o código herdado , para obter maneiras de refatorar lentamente o código sem testes para o código que pode ser usado com as ferramentas tradicionais de teste (e zombaria).
fonte
O tutorial do Moq tem uma seção sobre plano de fundo, filosofia e controvérsia logo no início, que discute isso em relação a algumas ferramentas específicas: TypeMock Isolator, RhinoMocks e Moq. Ele foi escrito para explicar o Moq, portanto é naturalmente um pouco distorcido, mas achei bastante útil para mim ao tentar entender algumas das diferenças nas estruturas de simulação.
Eu também achei úteis as respostas a esse thread SO no C # Mocking Frameworks . A maioria se refere apenas a uma Mocking Framework que o usuário realmente considera útil, mas há uma resposta do HaraldV que descreve maneiras de simulação e de proxy.
Também pude encontrar um gráfico de comparação on-line. Observe que é de 2009, então não tenho certeza se está atualizado; há pelo menos um comentário declarando que as informações sobre o TypeMock e os retornos de chamada estão desatualizadas, mas o gráfico pode ser bom para levantar questões a serem consideradas, mesmo que você precise fazer um trabalho braçal para ver qual é o estado atual: RhinoMocks, Moq, NMock, e gráfico de comparação TypeMock
Existe um projeto no Google Code com casos de teste em várias estruturas de simulação para fácil comparação de códigos: mocking-frameworks-compare
fonte
Na minha equipe, escolhemos o Microsoft Moles . Ele vence significativamente nos números 2, 3 e 4, embora seja menos idiomático do que a maioria das alternativas e está na extremidade inferior do número 1.
fonte