O teste unitário consiste em verificar o comportamento das menores unidades de uma aplicação, como uma classe ou método em linguagens orientadas a objetos, ou funções e procedimentos em linguagens processuais e funcionais.
Segundo Michael Feathers, os testes unitários precisam funcionar isoladamente e rapidamente. Eles não devem depender de processos ou sistemas externos, como operações de E/S (input/output) envolvendo banco de dados, arquivos, console ou rede. Se houver dependência externa, o teste não é unitário, mas de integração.
<aside> 💡 Testes unitários, assim como qualquer teste automatizados não servem principalmente para verificar se uma função específica está funcionando, mas sim para garantir que sua aplicação continue funcionando após alguma alteração em sua base de código.
</aside>
Embora o objetivo mais mencionado dos testes unitários seja validar que cada unidade de trabalho se comporta conforme o esperado, o verdadeiro propósito é fornecer feedback quase instantâneo sobre o design e a implementação do código. A facilidade ou dificuldade em criar esses testes revela o quão testável e bem projetado é o código, ajudando a identificar áreas que podem ser melhoradas.
Os testes unitários proporcionam muitos benefícios.
Mantenha os Testes Simples e Independentes
Escreva testes pequenos e focados em uma única responsabilidade. Cada teste deve ser independente dos outros, para que possam ser executados em qualquer ordem sem interferências.