Se eu já tenho um teste de integração para o meu programa e todos foram aprovados, sinto que ele funcionará. Quais são os motivos para escrever / adicionar testes de unidade? Como já tenho que escrever testes de integração, gostaria de escrever apenas testes de unidade para peças que não são cobertas por testes de integração.
O que eu sei os benefícios do teste de unidade sobre o teste de integração são
- Pequeno e, portanto, rápido de executar (mas adicionar uma nova unidade para testar algo já foi testado pelo teste de integração significa que meu traje de teste total fica maior e mais longo para executar)
- Localize o bug com mais facilidade porque ele só testa uma coisa (mas posso iniciar o teste de unidade de gravação para verificar cada parte individual quando meu teste de integração falhou)
- Encontre um bug que pode não ser detectado no teste de integração. por exemplo, mascaramento / correção de erros. (mas se minha integração testar todas as aprovações, o que significa que meu programa funcionará mesmo que exista algum bug oculto. Portanto, encontre / corrija esses bugs não são realmente de alta prioridade, a menos que comecem a interromper futuros testes de integração ou causem problemas de desempenho)
E sempre queremos escrever menos código, mas os testes de unidade de gravação precisam de muito mais código (principalmente a configuração de objetos simulados). A diferença entre alguns dos meus testes de unidade e testes de integração é que, nos testes de unidade, eu uso objetos simulados, e nos testes de integração, eu uso objetos reais. Que têm muita duplicação e eu não gosto de código duplicado, mesmo em testes, porque isso adiciona uma sobrecarga para alterar o comportamento do código (a ferramenta refatorar não pode fazer todo o trabalho o tempo todo).