Sto costruendo una nuova applicazione e cerco di aderire allo sviluppo "test-first" nel modo più fedele possibile. Mi trovo in situazioni in cui ho bisogno di implementare/modificare una funzionalità che ha l'effetto di invalidare un numero di test unitari esistenti. Come dovrei avere a che fare con questo? Come la vedo io, ci sono 3 opzioni:Cosa fare quando una nuova funzione fa sì che i test unitari esistenti non siano più validi?
aggiornare o rimuovere tutti test esistenti per soddisfare i nuovi requisiti di funzionalità (con l'aggiunta di più se necessario), quindi implementare la funzione
Attuare il caratteristica prima, eseguire test per vedere gli errori, e aggiornare o rimuovere eventuali test falliti (aggiungere più se necessario)
Aggiungi nuovi test per la nuova funzione, implementare la funzione, eseguire tutti i test di vedere il vecchio su es sicuro, rimuovere o aggiornamento vecchie prove necessarie
La prima opzione aderisce TDD, ma può essere estremamente controproducente. La seconda opzione è la più semplice, ma per prima cosa non si effettueranno test fedelmente e potrebbero non essere "coperti" correttamente. La terza opzione è un compromesso di entrambi e attraente per un certo grado, ma corri il rischio di riscrivere un test quando potresti aver aggiornato solo uno vecchio.
Non mi sembra di avere una strategia chiara qui. Cosa fai in queste situazioni?
Questo è quello che faccio quando penso a tutto il codice che ho provato che alla fine è andato nella pattumiera: http://www.youtube.com/watch?v=tgBI3-q5COM – Will
Sembra strano che fare una modifica (correttamente) potrebbe interrompere diversi test di unità. Uno o due forse, ma diversi? È possibile che i test dell'unità si sovrappongano troppo? – Beta
@Beta, aggiungendo un requisito per cui l'implementazione richiede ora una classe dipendente aggiuntiva. Ora gli altri test non forniscono un'implementazione fittizia dell'oggetto dipendente, quindi quando vengono eseguiti ottieni un sacco di eccezioni di riferimento null. Dovresti quindi tornare indietro e sistemare il tuo codice di configurazione in modo che possano passare. – tvanfosson