Eu trabalho em uma pequena empresa como desenvolvedor solo. Sou o único desenvolvedor da empresa. Tenho vários projetos (relativamente) grandes que escrevi e mantenho regularmente, e nenhum deles tem testes para apoiá-los. Ao iniciar novos projetos, muitas vezes me pergunto se devo tentar uma abordagem de TDD. Parece uma boa ideia, mas sinceramente nunca posso justificar o trabalho extra envolvido.
Eu trabalho duro para ter uma visão de futuro em meu design. Sei que certamente um dia outro desenvolvedor precisará manter meu código ou, pelo menos, solucioná-lo. Eu mantenho as coisas o mais simples possível e comento e documento as coisas que seriam difíceis de entender. E o fato é que esses projetos não são tão grandes ou complicados que um desenvolvedor decente teria dificuldade em compreendê-los.
Muitos dos exemplos que eu já vi de testes chegam às minúcias, cobrindo todas as facetas do código. Como sou o único desenvolvedor e estou muito próximo do código em todo o projeto, é muito mais eficiente seguir um padrão de teste de gravação em seguida, manualmente. Também acho que os requisitos e os recursos mudam com frequência suficiente para que a manutenção de testes adicione uma quantidade considerável de atrito em um projeto. Tempo que de outra forma poderia ser gasto resolvendo as necessidades da empresa.
Então, acabo com a mesma conclusão a cada vez. O retorno do investimento é muito baixo.
Ocasionalmente, configurei alguns testes para garantir que escrevi um algoritmo corretamente, como calcular o número de anos que alguém está na empresa com base na data de contratação. Mas, do ponto de vista da cobertura de código, cobri cerca de 1% do meu código.
Na minha situação, você ainda encontraria uma maneira de tornar o teste de unidade uma prática regular ou estou justificado em evitar essa sobrecarga?
ATUALIZAÇÃO: Algumas coisas sobre a minha situação que deixei de fora: Meus projetos são todos aplicativos da Web. Para cobrir todo o meu código, eu teria que usar testes automatizados de interface do usuário, e essa é uma área em que ainda não vejo um grande benefício em relação aos testes manuais.