Questa potrebbe essere una domanda piuttosto stupida dato che sono ai miei primi tentativi di TDD. Ho adorato il senso di fiducia che porta e la struttura generalmente migliore del mio codice, ma quando ho iniziato ad applicarlo su qualcosa di più grande degli esempi di giocattoli di una classe, ho incontrato difficoltà.
Supponiamo che tu stia scrivendo una specie di libreria. Sai cosa deve fare, conosci un modo generale di come dovrebbe essere implementato (per quanto riguarda l'architettura), ma continui a "scoprire" che è necessario apportare modifiche all'API pubblica durante la codifica. Forse devi trasformare questo metodo privato in un modello di strategia (e ora devi passare una strategia derisa nei tuoi test), forse hai smarrito una responsabilità qua e là e diviso una classe esistente.
Quando stai migliorando il codice esistente, TDD sembra davvero una buona scelta, ma quando scrivi tutto da zero, l'API per cui scrivi i test è un po '"sfocata" a meno che tu non faccia un grande progetto in anticipo. Cosa fai quando hai già 30 test sul metodo che ha cambiato la sua firma (e per quella parte, il comportamento)? Ci sono molti test da cambiare una volta sommati.