O que é um teste unitário
Teste unitário verifica uma unidade de comportamento sob condições conhecidas. Ele prepara uma situação, executa o código e compara o resultado com uma expectativa definida para aquela entrada. Ao testar um cálculo de desconto, por exemplo, você informa o total da compra e confere o desconto devolvido pela função.
A unidade pode ser uma função ou um conjunto pequeno de partes que trabalham juntas. O alcance deve ajudar a entender qual comportamento falhou, sem exigir uma correspondência rígida entre cada função e cada teste.
Preparar, executar e verificar
A preparação fornece as entradas e o estado necessário para o cenário. Depois da ação, a verificação compara o resultado observado com o esperado e deve falhar quando essa expectativa não é atendida.
Defina o resultado esperado a partir do comportamento especificado para o produto. Se uma compra deve receber 1.000 centavos de desconto, esse é o resultado a comparar com a função. Chamar a própria função para obter a expectativa faria o teste aceitar o mesmo cálculo incorreto dos dois lados da comparação.
Escolher os colaboradores do cenário
Alguns testes executam colaboradores reais da unidade, enquanto outros usam substitutos como mocks. As duas abordagens aparecem na prática, e a escolha depende do alcance pretendido e do que precisa ser controlado.
Comunicação remota costuma exigir atenção porque pode acrescentar espera e resultados variáveis. Testes pequenos e previsíveis permitem verificações frequentes, mas velocidade sozinha não define se um teste é unitário.
Evitar resultados dependentes da ordem
Um teste pode alterar uma configuração compartilhada e afetar o cenário seguinte. Prepare o estado necessário e restaure o que foi modificado conforme o mecanismo da ferramenta, para que cada resultado tenha uma explicação própria.
Datas e horários também precisam de tratamento explícito quando determinam o resultado. Para testar uma promoção que termina às 18h, forneça ao cenário um horário conhecido e confira o comportamento próximo do encerramento. Usar o relógio real faria o teste mudar de resultado ao longo do dia sem nenhuma alteração no código.
Examinar o que a verificação detecta
Leia a comparação final e pergunte qual erro ela conseguiria revelar. No exemplo do desconto, os casos devem distinguir inclusão e exclusão do limite, além de conferir o valor concedido.
Cobertura de execução não demonstra que essas diferenças foram examinadas. Uma linha pode ser executada sem que o teste compare o resultado relevante, enquanto entradas ausentes continuam sem verificação.
Para revisar testes de uma função gerada ou alterada com IA, o Desenvolvimento Colaborativo da Dev Side Studio permite examinar os resultados esperados e executar os cenários com orientação ao vivo. Você trabalha no editor e confere se as expectativas representam o comportamento pretendido.
Dúvidas frequentes
Perguntas frequentes sobre Teste unitário
- A unidade precisa ser uma única função?
- Não. Ela pode ser uma função, uma classe ou um pequeno conjunto que representa um comportamento. O projeto precisa deixar esse alcance compreensível.
- Toda dependência precisa de mock?
- Não. Há testes unitários que usam colaboradores reais e outros que os substituem. O importante é entender o comportamento verificado e controlar as condições do cenário.
- Executar todas as linhas comprova o comportamento?
- Não. Cobertura informa quais partes foram exercitadas conforme a métrica usada. A qualidade das verificações e os casos ausentes precisam ser examinados separadamente.
- Por que testar valores próximos de um limite?
- Uma comparação pode aceitar valores acima do mínimo e recusar por engano o próprio mínimo. Testar abaixo, no limite e acima dele distingue esses comportamentos. Use valores compatíveis com a entrada, como centavos inteiros em um cálculo monetário.
Para continuar
Recursos relacionados
Documentação
Martin Fowler: teste unitário
Unidade de comportamento, colaboradores e variações da prática.
Abrir recursoDocumentação
Jest: primeiros testes
Execução de funções e comparação com resultados esperados.
Abrir recursoDocumentação
Jest: preparação e limpeza
Estado inicial e isolamento entre cenários.
Abrir recursoAplicação na formação
Vibe Coding: Do Zero ao MVP
Testes unitários conferem comportamentos de partes do código para detectar diferenças após alterações no projeto.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.