私はTDDでの最初の試みであるので、これはかなりばかげた質問かもしれません。私はそれがもたらす自信とコードの一般的な構造が大好きでしたが、1クラスのおもちゃの例よりも大きなものに適用し始めたとき、私は困難に直面しました。
ある種のライブラリを作成しているとします。あなたはそれが何をしなければならないか、それがどのように実装されるべきかについての一般的な方法を知っています(アーキテクチャ上)、しかしあなたはあなたがコードとしてあなたのパブリックAPIに変更を加える必要があることを「発見」し続けます。おそらく、このプライベートメソッドを戦略パターンに変換する必要があり(テストでモックされた戦略を渡す必要があります)、おそらく責任をあちこちに置き忘れて、既存のクラスを分割する必要があります。
既存のコードを改良する場合、TDDは非常に適しているように見えますが、最初からすべてを記述する場合、テストを作成するAPIは、事前に大きな設計を行わない限り、少し「ぼやけ」ます。シグネチャ(およびその部分の動作)が変更されたメソッドで既に30のテストがある場合はどうしますか?それは一度追加すると変更する多くのテストです。