Dies könnte eine ziemlich dumme Frage sein, da ich bei meinen ersten TDD-Versuchen bin. Ich mochte das Gefühl des Vertrauens und die allgemein bessere Struktur meines Codes, aber als ich anfing, es auf etwas anzuwenden, das größer war als ein einziges Spielzeugbeispiel, stieß ich auf Schwierigkeiten.
Angenommen, Sie schreiben eine Art Bibliothek. Sie wissen, was es zu tun hat, Sie wissen allgemein, wie es implementiert werden soll (in Bezug auf die Architektur), aber Sie "entdecken" immer wieder, dass Sie während des Codierens Änderungen an Ihrer öffentlichen API vornehmen müssen. Vielleicht müssen Sie diese private Methode in ein Strategiemuster umwandeln (und jetzt müssen Sie in Ihren Tests eine verspottete Strategie bestehen), vielleicht haben Sie hier und da eine Verantwortung verlegt und eine vorhandene Klasse aufgeteilt.
Wenn Sie vorhandenen Code verbessern, scheint TDD wirklich gut zu passen, aber wenn Sie alles von Grund auf neu schreiben, ist die API, für die Sie Tests schreiben, ein bisschen "verschwommen", es sei denn, Sie machen ein großes Design im Vorfeld. Was tun Sie, wenn Sie bereits 30 Tests für die Methode durchgeführt haben, deren Signatur (und für diesen Teil das Verhalten) geändert wurde? Das ist eine Menge Tests, die sich ändern müssen, wenn sie sich summieren.