Per un po 'ho cercato di imparare a scrivere unit test per il mio codice.
Inizialmente ho iniziato a fare il vero TDD, dove non avrei scritto alcun codice fino a quando non avrei scritto prima un test fallito.
Tuttavia, recentemente ho avuto un problema spinoso da risolvere che ha comportato molto codice. Dopo aver trascorso un paio di settimane a scrivere test e quindi a scrivere codice, sono arrivato alla sfortunata conclusione che il mio intero approccio non avrebbe funzionato e avrei dovuto buttare via due settimane di lavoro e ricominciare da capo.
Questa è una decisione abbastanza sbagliata da prendere quando hai appena scritto il codice, ma quando hai anche scritto diverse centinaia di test unitari diventa ancora più emotivamente difficile buttare via tutto.
Non posso fare a meno di pensare di aver sprecato 3 o 4 giorni di sforzi per scrivere quei test quando avrei potuto mettere insieme il codice per la prova del concetto e poi aver scritto i test dopo essere stato soddisfatto del mio approccio.
In che modo le persone che praticano il TDD gestiscono correttamente tali situazioni? C'è un motivo per piegare le regole in alcuni casi o scrivi sempre prima in modo testato, anche quando quel codice può rivelarsi inutile?