nunitを使用したassert.doesnotthrow - スタックトレースを取得する方法は?
-
28-10-2019 - |
質問
私はユニットテストにヌニットを使用しています(TD.NETで実行)。
assert.doesnotthrowを使用する場合、例外は得られますが、スタックトレースがないため、ルートの問題を識別することが困難になります。
どうすればこれに取り組むことができますか?
解決
Assert.DoesNotThrow
テストがテストをスローする場合、テストが自動的に失敗する場合、冗長です それなし アサート。私の謙虚な意見では、テストされたものが何であるかをクリアすることは、テスト方法名でよりよく伝えられています。ドキュメントの利点はほとんどありません Assert.DoesNotThrow
構文と、あなたが指摘するように、故障したテストを修正するのが難しくなります。
また、複数のアサートを含む非常に長いテストがある場合 Assert.DoesNotThrow
正しいコードブロックが例外を投げかけたと主張するために重要な役割を果たします。ただし、この場合、より適切な解決策は、テストを短縮できるか、自分のテストに移動することができるかどうかを確認することです。
他のヒント
私はそれが本当にあなたの質問に答えているとは思わないが、私はあなたがあなたが渡したデリゲートにいくつかのコードを包む必要がないように、私はテストを単一の状況に短縮するので Assert.DoesNotThrow
. 。次に、アサーションなしでテストを書くだけです。予期しない例外をスローするテストは失敗するため、必要なことを行い、完全な例外が得られます。
私のテストの約10%がこのように機能します。アサーションはまったくありません。また、メソッド名 ThisOrThatShouldNeverThrow()
.
別のオプションは、デバッグ中に、デバッガー(TD.NETを使用)でテストを実行し、デバッグ|例外でいくつかの追加ボックスをチェックして、例外がスローされたときにデバッガーが停止するようにします。