this answerのコメントの議論のフォローとして、TDDテストは常に失敗するべきですか?TDDテストは常に最初に失敗する必要がありますか?
次の例を考えます。 LinkedHashSetの実装を書いていて、重複を挿入した後に元のものが挿入前と同じ反復順序にあるという1つのテスト・テストがある場合、重複が全くないという別のテストを追加することができます。
最初のテストは最初に失敗してから実行されることが確認されます。
問題は、最初のテストパスを作成するために、実装は、データを格納するために、異なるセットの実装を使用することは非常に可能性があるので、ちょうど副作用として第二のテストが既に通過することです。
私は、テストの失敗の主な目的は、テストが良いテストであることを保証することだと思います(何度もテストを書いてしまいました。 。しかし、あなたが書いたテストが本当に何かをテストしていると確信しているなら、あとでその行動を破らないようにすることは貴重なことではありませんか?
私は確かに、動的言語のルーキー(したがって、答えではなくコメント)ですが、私の直感は動的言語の場合はそうです。静的言語に依存します。静的言語でコンパイルが失敗するコードは動的言語で実行されますが、テストは失敗します。静的な言語を実行するためには、テスト中のコードに何らかのベースライン動作を追加する必要があります(たとえ空のメソッドであっても)。正しく書き込まれたテストを最初に通過させる必要があります。 –