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:

  1. 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.
  2. 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:

  1. Clareza: O nome é autoexplicativo e mais intuitivo.
  2. Independência de implementação: O nome reflete o comportamento esperado, não detalhes específicos do método.
  3. 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.