Vix, este topico vai gerar mta discussao
Mas com certeza TUDO a favor de testes unitarios.
Cara, eu nao sei mais o que é desenvolver sem escrever pelo menos um teste com cenario ideal pra aquela funcao. Imagina toda vez que for gerar uma release, vc ter que ficar fazendo TODOS os testes funcionais, passando por todas as telas e todas as funcionalidades? Ai de repente acha um erro (nunca acha erros né? rs) e tem que fazer os testes tudo de novo, para ver se essa solucao nao quebrou nada.
Inumeras vezes meus testes e de outras pessoas foram quebrados, por coisas que eu nao tinha nem nocao que podia quebrar. Imagina se vc, em um projeto JEE, usa maven e jboss, ai toda vez que fizer uma alteracao, vc tem que recompilar o projeto pelo maven e subir o jboss pra testar apenas uma funcionalidade. Bem mais rápido vc escrever um teste unitário (que ficara pra sempre no projeto) e rodar pra ver se realmente funciona.
Imagina chega um estagiario novo, e faz alteracao em um ENUM, colocando um registro no meio, e no sistema, tinha outro estagiario (que ja saiu da empresa) que fez a funcionalidade pelo ordinal do enum. Aparentemente está OK, depois de 1 ano, vc ve que o sistema tava salvando tudo errado. Mas e agora? E pra saber desde quando o sistema está gravando errado? Pensa no tempo e no custo que isso vai custar ao projeto.
Testes unitarios é totalmente necessário para um desenvolvimento de software. Nao estou falando isso porque li a respeito, mas sim porque vi a diferenca e a necessidade na prática.
O ideal é no momento que estiver criando o projeto, nao passar pra outra camada sem escrever testes unitarios pra ele antes. Pq se vc for fazer todo o sistema, pra depois comecar a escrever os testes, “nao vai dar tempo” de escrever, e vai acabar ficando com menos prioridade.