La mia comprensione di come TDD dovrebbe funzionare è la scrittura di un test non funzionante per il prossimo bit di funzionalità che si desidera aggiungere a una funzione o oggetto, codice fino al passaggio del test e quindi scrittura del test successivo. È mai ok scrivere test che passano con il codice così com'è?
Un esempio di ciò è accaduto oggi. Stavo scrivendo una funzione che Manchester potrebbe codificare per un numero arbitrario di bit. Ho scritto test falliti per codificare un singolo bit e codificato fino a quando non è passato, quindi ho scritto un test non riuscito per passare due bit alla funzione e codificato fino a quando non è passato. Ma la soluzione che usavo per gestire due bit ha fatto funzionare il codice per un numero qualsiasi di bit. Perché passare un byte alla funzione sarà il suo uso più comune, ho aggiunto un test unitario per assicurarmi che funzionasse per 8 bit, cosa che in effetti è passata.
Ho violato i principi TDD? C'è qualcosa di sbagliato nell'aggiungere test ridondanti solo per la mia tranquillità? Capisco che parte del problema è che avrei potuto scrivere un test difettoso e non lo avrei mai saputo perché non ha fallito in primo luogo, ma non sono sicuro di quale sia l'alternativa.