私は python unittest のユーザーですが、これはすべての言語にまたがっています。
シナリオ: 「functionBeingTested」の欠陥を発見しました。
欠陥は、有効な入力でコードがクラッシュする (例外をスローする) ことです。
テストケースを書くとき、私は非常に簡単にできます:
def testThis(self):
self.assertEqual( functionBeingTested("valid input"), "expected output")
TDD の用語では、これは「失敗」すると予想されますが、代わりに例外が発生し、「エラー」が発生します。
Ran 1 tests with 0 failures and 1 errors
あなたが望むと仮定するでしょう:
Ran 1 tests with 1 failures and 0 errors
このPython 単体テストには解決策があります: Reporting Exception as Failure
ここでの同様の議論:例外がスローされない場合は単体テストに合格する
しかし、それは問題ではありません。
問題は「テスト スイートを維持するためのベスト プラクティス」です。
純粋なテスト駆動開発で「エラー テスト ケース」を作成することは哲学的に許容されますか?それとも、この単体テストを作成して例外をキャッチし、アサーション エラーを発生させて、代わりに「失敗」を示す必要がありますか? 'エラー'。
この質問に光を当てることができなかったいくつかの読書:
http://www.computer.org/portal/web/swebok/html/ch5#Ref1.1.2
"IEEE Standard Glossary of Software Engineering Terminology" (google it)
そして、Python 2 と Python 3 の unittest ドキュメント間の編集を見てください: http://docs.python.org/2/library/unittest.html#organizing-test-code http://docs.python.org/3/library /unittest.html#organizing-test-code
Python 3 では、このフレーズが省略されたようです。
[error] は、問題がどこにあるかを特定するのに役立ちます。失敗は、誤った結果 (6 を予期していた場所) によって引き起こされます。
この質問の他のタイトルが検討されてい
ます。
または
「「失敗」と「エラー」の哲学的な違いは何ですか、
または
「TDDでは、すべての「失敗したテスト」は「失敗」をスローするか、「エラー」を許容するように書かれるべきですか」
「1つはアサーションエラーで、もう1つはそうではない」などの簡単な回答を得ずに、私がここで求めていることを正確に特定しようとしていますが、喜んで反対票を投じます。