Devo scrivere un test per dimostrare che l'eliminazione del codice corregge un bug?

14

Occasionalmente mi imbatto nella situazione in cui la correzione di un bug richiede che io elimini una sezione di codice. Il purista del TDD avrebbe (suppongo) difendere la scrittura di un test fallimentare, cancellando il codice, quindi guardando il test pass.

Ora, sembra davvero strano avere un test che asserisce che alcuni codici sono stati rimossi. Certo, suppongo che garantirebbe a nessuno il controllo del codice sorgente e reinserire il codice, ma ne vale la pena? Se ne vale la pena, sicuramente sembra meno prezioso della scrittura di un test per il codice che è stato aggiunto , giusto?

    
posta jhewlett 21.02.2013 - 06:21
fonte

1 risposta

50

Lo stai guardando nel modo sbagliato. Il test non afferma che il codice è stato rimosso. Il test fa asserisce una certa funzionalità.

Il test non si preoccupa della quantità di codice richiesta per farlo passare, né si rende conto che hai rimosso del codice. Il valore di avere un tale test è lo stesso di qualsiasi altro test che crei a causa di un bug: hai fiducia nell'assenza del bug quando il test passa e l'integrazione del test nel processo di build ti assicura che il bug molto probabilmente non verrà reintrodotto.

Un altro modo per guardarlo da una prospettiva TDD è il seguente: quando sai che eliminare il codice corregge il bug e allora ti chiedi se scrivere un test, hai già sbagliato TDD . Una volta che si inizia a lavorare sul bug, si dovrebbe prima scrivere il test che assicuri la presenza del bug in caso di errore. Solo dopo risolvi il bug effettivo, che potrebbe richiedere la rimozione del codice o meno, e fai passare il test. La domanda che stai facendo non si pone nemmeno in questo modo.

    
risposta data 21.02.2013 - 07:18
fonte

Leggi altre domande sui tag