Questa potrebbe essere una domanda piuttosto stupida come lo sono nei miei primi tentativi di TDD. Ho amato il senso di confidenza che porta e in generale la migliore struttura del mio codice, ma quando ho iniziato ad applicarlo su qualcosa di più grande di esempi di giocattoli di una classe, mi sono imbattuto in difficoltà.
Supponiamo che tu stia scrivendo una sorta di libreria. Sai cosa deve fare, sai un modo generale di come dovrebbe essere implementato (architettura saggio), ma continui a "scoprire" che hai bisogno di apportare modifiche alla tua API pubblica mentre esegui il codice. Forse hai bisogno di 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 dividi una classe esistente.
Quando stai migliorando il codice esistente, TDD sembra un ottimo adattamento, 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. Che cosa fai quando hai già 30 test sul metodo che ha la sua firma (e per quella parte, il comportamento) è cambiato? Questo è un sacco di test da cambiare una volta che si sommano.