Oltre a pensare solo a una cosa, un paradigma di TDD è scrivere il codice minimo possibile per superare il test. Quando scrivi un test alla volta, è molto più facile vedere il percorso per scrivere un codice sufficiente per far passare quel test. Con un'intera serie di test da superare, non si arriva al codice a piccoli passi, ma bisogna 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 sola", ma scrivi abbastanza codice per passare un test alla volta, potrebbe comunque funzionare. Dovresti avere più disciplina per non andare avanti e scrivere più codice di quello che ti serve, però. Una volta iniziato questo percorso, ti lasci aperto a scrivere più codice di quello che descrivono i test, che può essere non testato , almeno nel senso che non è guidato da un test e forse nel percepire che non è necessario (o esercitato) da alcun test.
Scoprire cosa dovrebbe fare il metodo, come commenti, storie, una specifica funzionale, ecc., è perfettamente accettabile. Aspetterei di tradurre questi in prove uno alla volta però.
L'altra cosa che puoi perdere scrivendo i test tutto in una volta è il processo di pensiero attraverso il quale superare un test può indurti 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 di passaggio. Come ho detto, avere una buona idea di ciò che il metodo dovrebbe fare è molto buono, ma molte volte mi sono trovato 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 tu possa perdere queste cose a meno che tu non prenda l'abitudine di pensare a quali nuovi test posso scrivere che non ho già.