Помимо одной мысли - одна парадигма TDD - написать наименьший возможный код для прохождения теста. Когда вы пишете один тест за раз, гораздо проще увидеть путь к написанию кода, достаточного для прохождения этого теста. С полным набором тестов, которые вы должны пройти, вы не переходите к коду небольшими шагами, а должны сделать большой скачок, чтобы все они прошли за один раз.
Теперь, если вы не ограничиваете себя написанием кода, заставляющего их все проходить «за один раз», а скорее пишете достаточно кода для прохождения одного теста за раз, он все равно может работать. Вы должны были бы быть более дисциплинированными, чтобы не просто писать дальше и писать больше кода, чем вам нужно. Как только вы начинаете идти по этому пути, вы оставляете себя открытым для написания большего количества кода, чем описывают тесты, что может быть непроверено , по крайней мере, в том смысле, что он не определяется тестом, а возможно, в том смысле, что он не нужен (или выполняется) любым тестом.
Понять, что должен делать метод, в виде комментариев, историй, функциональной спецификации и т. Д., Вполне приемлемо. Я бы подождал, чтобы перевести их в тесты по одному, хотя.
Другая вещь, которую вы можете упустить, написав тесты одновременно, - это процесс мышления, с помощью которого прохождение теста может побудить вас подумать о других тестовых примерах. Без банка существующих тестов вам нужно подумать о следующем тестовом примере в контексте последнего прохождения теста. Как я уже сказал, очень хорошо иметь представление о том, что должен делать метод, но много раз я обнаруживал, что нахожу новые возможности, которые я не рассматривал априори, но которые возникали только в процессе написания тесты. Существует опасность того, что вы можете пропустить их, если только у вас нет привычки думать, какие новые тесты я могу написать, которых у меня еще нет.