Oltre a pensare solo a una cosa, un paradigma di TDD è quello di scrivere il minor codice possibile per superare il test. Quando scrivi un test alla volta, è molto più facile vedere il percorso per scrivere il codice sufficiente per far passare quel test. Con un'intera serie di test da superare, non si arriva al codice in piccoli passi ma si deve fare un grande salto per farli passare tutti in una volta.
Ora, se non ti limiti a scrivere il codice per farli passare tutti "in una volta", ma piuttosto scrivi il codice sufficiente per passare un test alla volta, potrebbe ancora funzionare. Dovresti avere più disciplina non solo per andare avanti e scrivere più codice di quello che ti serve, però. Una volta iniziato quel percorso, ti lasci aperto a scrivere più codice di quanto descrivono i test, che può essere non testato , almeno nel senso che non è guidato da un test e forse nel senso che non è necessario (o esercitato) da qualsiasi test.
Abbassare ciò che il metodo dovrebbe fare, come commenti, storie, una specifica funzionale, ecc., È perfettamente accettabile. Aspetterei di tradurli in test uno alla volta però.
L'altra cosa che puoi perdere scrivendo i test tutti in una volta è il processo di pensiero attraverso il quale passare un test può spingerti a pensare ad altri casi di test. Senza una banca di test esistenti, è necessario pensare al prossimo caso di test nel contesto dell'ultimo test superato. Come ho detto, avere una buona idea di cosa dovrebbe fare il metodo è molto buono, ma molte volte mi sono ritrovato a trovare nuove possibilità che non avevo considerato a priori, ma che si sono verificate solo nel processo di scrittura del test. C'è il pericolo che potresti perdere questi a meno che tu non abbia l'abitudine specifica di pensare a quali nuovi test posso scrivere che non ho già.