Pergunta

Então, sou razoavelmente novo em testes de unidade e zombaria em C# e .NET; Estou usando manchas xunit.net e rinoceronte, respectivamente. Sou convertido e estou focado em escrever especificações de comportamento, eu acho, em vez de ser puramente TDD. Bah, semântica; Eu quero que uma rede de segurança automatizada funcione acima, essencialmente.

Um pensamento me impressionou embora. Eu recebo programação contra interfaces e os benefícios no que diz respeito às dependências desmontadas. Vendido. No entanto, no meu conjunto de verificação de comportamento (também conhecido como testes de unidade ;-)), estou afirmando o comportamento uma interface de cada vez. Como, uma implementação de uma interface de cada vez, com todas as suas dependências zombadas e expectativas configuradas.

A abordagem parece ser que, se verificarmos que uma classe se comporta como deveria contra suas dependências colaboradoras e, por sua vez, depende de cada uma dessas dependências colaboradoras para ter assinado o mesmo contrato de qualidade, somos dourados. Parece razoável o suficiente.

De volta ao pensamento, no entanto. Existe algum valor nos testes de semi-integração, onde uma fixação de teste está afirmando contra uma unidade de implementações concretas que são conectadas e estamos testando seu comportamento interno contra dependências ridicularizadas? Acabei de reler isso e acho que provavelmente poderia ter formado melhor. Obviamente, haverá uma certa quantidade de "bem, se agregar valor a você, continue fazendo isso", suponho - mas alguém mais pensou em fazer isso e colheu os benefícios de superar os custos?

Foi útil?

Solução

Sua pergunta foi debatida há anos e também pode ser reformulada como "O que é uma unidade"?

Não existe uma lei de testes de unidade que diga que você precisa testar cada classe isoladamente. No entanto, para ser sustentável, você realmente deseja que os testes precisem mudar apenas quando o comportamento que eles testam mudam. Olhei para isso dessa maneira, geralmente é razoável usar versões concretas de colaboradores e falsificações próximas para as mais distantes.

O único lugar que eu absolutamente uso falsificações de um tipo ou de outro é seguir o de Michael Feather Regras de teste de unidade.

Outras dicas

Não vejo valor nos testes de integração que apenas vinculam classes internas totalmente testáveis.

Parece -me que o valor nos testes de integração é onde ele toca a plataforma ou interfaces externas, ou seja, contratos que você não pode fazer um teste de unidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top