In TDD, è una cattiva pratica passare un test con codice che supererebbe più di un test? [duplicare]

1

Quando usi TDD, è una cattiva pratica passare un test appena scritto con codice che potrebbe anche superare un altro test? Ad esempio, prendi il seguente test (in PHP)

public function WhenSomethingIsNull_ThrowsException()
{
    $input = null;
    $this->module->someMethod($input);
}

Questo potrebbe essere fatto per passare con il seguente codice

public function someMethod($input)
{
    if(!$input)
        throw new Exception()
}

Questo supererebbe anche il test WhenSomethingIsZero_ThrowsException . In questi casi, dovrei aggiustare quello che so è sbagliato con questo test nella fase di refactoring? O scrivi solo il codice che supera questo e solo questo test?

    
posta Andy Hunt 16.01.2014 - 09:57
fonte

1 risposta

8

No, non è una cattiva pratica.

Il punto di TDD è assicurarsi che tutto il tuo codice sia coperto da test. La regola che ogni test dovrebbe testare solo una cosa è promuovere la leggibilità dei test ed è in generale ragionevole.

Ma l'idea che ogni possibile difetto nella tua base di codice dovrebbe trip esattamente un test è eccessivo, e in progetti reali non sarai quasi mai in grado di gestire una messa a punto così precisa . Questo non è un problema finché tutti i possibili difetti sollevano almeno un errore nella tua suite di test. Dal momento che avere una suite di test è assicurarsi che passi tutti i test tutti in ogni momento, questo garantisce la copertura necessaria abbastanza bene.

    
risposta data 16.01.2014 - 10:06
fonte

Leggi altre domande sui tag