Це може бути досить дурним питанням, як я є при своїх перших спробах TDD. Мені подобалося почуття впевненості, яке воно приносить, і, як правило, краща структура мого коду, але коли я почав застосовувати його на чомусь більшому, ніж однокласні приклади іграшок, у мене виникли труднощі.
Припустимо, ви пишете своєрідну бібліотеку. Ви знаєте, що це має робити, ви знаєте загальний спосіб того, як воно має бути реалізовано (архітектурно), але ви постійно «виявляєте», що вам потрібно внести зміни в ваш публічний API під час кодування. Можливо, вам потрібно перетворити цей приватний метод у шаблон стратегії (і тепер вам потрібно пройти знущену стратегію у своїх тестах), можливо, ви неправильно переклали відповідальність туди-сюди і розділили існуючий клас.
Коли ви вдосконалюєте існуючий код, TDD здається справді гарним, але коли ви пишете все з нуля, API, для якого ви пишете тести, трохи "розмито", якщо ви не зробите перед собою великий дизайн. Що ви робите, коли у вас вже є 30 тестів на метод, який змінив його підпис (і в цій частині, поведінку)? Це багато тестів, які потрібно змінити, коли вони складатимуться.