私が理解していることから、TDD では、最初に失敗するテストを作成し、次に合格するコードを作成し、次にリファクタリングする必要があります。しかし、コードがテストしたい状況をすでに説明している場合はどうでしょうか?
たとえば、ソート アルゴリズムを TDD しているとします (これは単なる仮説です)。いくつかのケースの単体テストを書くかもしれません:
入力 = 1、2、3
出力 = 1、2、3
入力 = 4、1、3、2
出力 = 1、2、3、4
など...
テストに合格するために、私は手っ取り早いバブル ソートを使用します。次に、リファクタリングして、より効率的なマージソート アルゴリズムに置き換えます。後で、安定ソートにする必要があることに気がついたので、そのためのテストも書きます。もちろん、マージソートは安定したソート アルゴリズムであるため、テストが失敗することはありません。とにかく、誰かが別の不安定なソートアルゴリズムを使用するために再度リファクタリングする場合に備えて、このテストが必要です。
これは、常に失敗するテストを作成するという TDD のマントラを破っていますか? テストケースをテストするためだけに不安定なソートアルゴリズムを実装する時間を無駄にしてから、マージソートを再実装することを勧める人はいないでしょう。同様の状況にどのくらいの頻度で遭遇し、何をしますか?