Sinto lhe informar, mas você não entendeu TDD ainda.
De fato, qualquer coisa que for aplicar precisa aprender completamente como fazer, porque se fizer errado tem pouco valor, eu tenho uma palestra chamada "Não faça teste". Onde eu mostro porque grande parte dos testes não deveriam ser feitos, e claro, o que fazer para melhorar nisso. Eu não dou receitas de bolo de como fazer testes, porque isso é ooposto que a pessoa deveria fazer. Eu vejo muito em Github testes que não tem serventia alguma e a falta de testes em coisas fundamentais. A pessoa só faz burocraticamente.
Primeiro, ter confiança em alterar algo no código e não quebrar nada é fazendo testes, especialmente os de unidade (que muita gente chama de unitário, mas está errado, e mostra que a pessoa aprendeu errado). Não precisa de TDD para isto. Inclusive, pára pra pensar, o TDD prega fazer o teste antes de escrever o código, vai quebrar o que? Ah, ok, é para dar vermelho e depois verde, mas esse não é o objetivo. Então está longe dessa ser a maior vantagem do TDD, ou até mesmo que podemos dizer que é uma vatagem do TDD porque quem entrega essa vantagem é outra técnica, que por acaso é adotada no TDD.
Percebe que entender corretamente o problema é fundamental para fazer testes bons? E mais ainda se for aplicar o TDD porque tudo será regido de acordo com esses testes, então se fizer o TDD errado, todo o resto ficará capenga ou errado, passando no teste. Entender problemas corretamente e achar boas soluções para eles são as características fundamentais de todo bom desenvolvedor, o resto é só ferramenta. Por isso eu semrpe digo que entender de verdade a matemática e ser razoável em comunicação e expressão são a base de todo programador. Inclusive para ter um olhar mais questionador e não aplicar coisas onde não deve, só para seguir a modinha.
A função principal do TDD não é fazer testes, esses são usados como ferramenta. A função do TDD é planejar melhor o que vai fazer e documentar antes de tudo. Por isso precisa ser muito bem feito ou é muito melhor nem fazer.
Um dos grandes problemas que vejo no aprendizado do TDD é justamente a simplificação e fazer parecer que ele deve ser aprendido por si só. Tem que aprender resolver problemas, dominar os conceitos a computação, o TDD, se for realmente útil em um projeto, e tem que estar apto a determinar isso com destreza, deve ser uma consequência natural e competente porque já sabe o que vem antes.
TDD deveria ser das últimas coisas que a pessoa aprende e deve ser fácil porque ele em si não tem nada demais, o que precisa aprender antes é criar os requisitos de forma quase perfeita, e eu diria que ninguém consegue fazer isso o tempo todo, eu não consigo com mais de 40 anos de experiência, os melhores engenheiros, os com cargos distintos em big techs, falham nisso em várias situações. O problema é falhar muito. E deve entender tudo de computação para saber o que testar, e só depois de muita experiência você está apto a fazer TDD. Pode fazer sob estrita supervisão, para gerar até improdutividade no time para treinar você que vai começar fazer, ou seja, você vai fazer e outro experiente e que realmente saiba fazer os testes usando TDD vai corrigir tudo para você aprender onde errou. Quase ninguém faz isso, por isso é trágico o que vejo por aí.
A última coisa que eu acho que não entendeu é que ou testa tudo ou não testa, testar mais ou menos é o pior cenário. Claro que você pode escolher testar um componente crítico muito bem e não testar outros componentes, mas não pode testar algo pela metade porque o projeto é mais simples. Geralmente projetos simples, que vão ter pouca manutenção, talvez dure pouco, não é tão necessário fazer testes, mas tem que avaliar caso a caso, pode estar fazendo algo que tenha potencial de destruir dados, mesmo com meia dúzia de linhas.
Eu já falei mais sobre TDD diversas vezes e vou consolidar tudo em uma série de artigos no meu blog e canal que logo se iniciará.
Veja mais:
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).
- uma das críticas que faço ao modelo do Tabnews é que se perde muito conteúdo relevante.