Um projeto real me mostrou que não é possível escrever testes de unidade e, em seguida, a integração e mesmo a direção oposta estão erradas :-) Então, eu costumo escrever testes de unidade junto com os de integração.
Por quê? Deixe-me escrever como vejo os dois tipos de testes:
Testes de unidade - Além da Wikipedia e todas as informações conhecidas, os testes de unidade ajudam você a restringir seu design , melhorar seu modelo e relações. O fluxo é simples: quando você começa a digitar novo projeto / novo componente, na maioria das vezes você está criando algum tipo de PoC . Quando você termina, sempre tem métodos longos, classes longas, métodos e classes não coerentes, etc.
Os testes de unidade ajudam a remover esses problemas, pois quando você faz testes de unidade reais usando as simulações (sem a dependência de outro componente), as classes descritas acima não podem ser testadas. O sinal básico de código não testável é uma grande parte de zombaria dos testes, porque você é forçado a zombar de muitas dependências (ou situações)
Testes de integração - testes corretos e funcionais dizem que seu novo componente (ou componentes) trabalha em conjunto ou com outros componentes - essa é a definição usual. Descobri que os testes de integração principalmente ajudam a definir o fluxo de como usar seu componente do lado do consumidor .
Isso é realmente importante, pois às vezes diz a você que sua API não faz sentido do lado de fora.
Bem, o que aconteceu depois que escrevi testes de unidade e testes de integração depois?
Eu recebi boas aulas, design claro, bom construtor, métodos curtos e coerentes, pronto para IoC etc. Depois que eu der minha classe / API a algum consumidor, por exemplo, desenvolvedor da equipe de integração ou GUI, ele não poderá usar minha API, pois parece não lógica. , esquisito. Ele estava apenas confuso. Então, reparei a API de acordo com o ponto de vista dele, mas também foi necessário reescrever muitos testes, porque fui pressionado a alterar métodos e, às vezes, até o fluxo de como usar a API.
Bem, o que aconteceu depois que escrevi testes de integração e testes de unidade depois?
Eu tenho fluxo exato, boa usabilidade. O que eu também tenho são classes grandes, código não coerente, sem registro, métodos longos. Código de espaguete
Qual é o meu conselho?
Aprendi o seguinte fluxo:
- Desenvolva o esqueleto básico do seu código
- Escreva testes de integração que digam se faz sentido do ponto de vista do consumidor. Caso de uso básico é suficiente por enquanto. O teste obviamente não funciona.
- Escreva o código junto com os testes de unidade para cada classe.
- Escreva o restante / ausente dos testes de integração. Seria melhor implementar esses testes dentro do número 3 de como você está melhorando seu código.
Observe que fiz uma pequena apresentação sobre o teste de unidade / integração, consulte o slide 21, onde o esqueleto é descrito.