Ao escrever testes, muitos desenvolvedores se perguntam: qual a melhor forma de nomear meus testes? Embora pareça uma tarefa simples, um nome bem escolhido pode fazer toda a diferença na clareza e manutenção do código. Neste artigo, exploramos boas práticas e convenções para criar nomes de testes que realmente agregam valor ao seu projeto.
Convenções
Uma das convenções mais usadas é estruturar os nomes dos testes assim: [método][cenário][resultado esperado].
test('isDeliveryValid with invalid dates returns false', () => {
// Teste implementado aqui
});
Nesta abordagem:
- Método: é o nome da função ou método que está sendo testado.
- Cenário: é a condição específica que está sendo testada.
- Resultado esperado: descreve o resultado que o teste espera obter.
Problemas dessa convenção
Embora popular, essa convenção apresenta alguns problemas:
- Foco nos detalhes de implementação: Ao enfatizar o método, os nomes dos testes podem ficar acoplados ao código e não ao comportamento.
- Pouca clareza para não-programadores: Alguém fora da equipe de desenvolvimento pode não entender o que o teste realmente verifica.
Por exemplo, o nome isDeliveryValid with invalid dates returns false
não comunica claramente o comportamento esperado para um leitor leigo.
Como melhorar?
Uma alternativa mais eficiente é nomear os testes descrevendo o cenário e o comportamento esperado. Veja como reescrever o exemplo anterior:
test('delivery with a past date should be invalid', () => {
// Teste implementado aqui
});
Vantagens:
- Clareza: O nome é autoexplicativo e mais intuitivo.
- Independência de implementação: O nome reflete o comportamento esperado, não detalhes específicos do método.
- Inclusividade: Facilita a compreensão para membros da equipe que não são programadores, como analistas de negócio.
Conclusão
Ao priorizar a descrição do comportamento esperado, você torna seus testes mais intuitivos e fáceis de entender para todos os membros da equipe. E lembre-se: você não está apenas testando código, mas sim validando comportamentos que fazem sentido para o seu negócio.