しばらくの間、NUnitとVisualStudioを使用してC#.NETコードを記述してきました。例外のテストは、次のスタイルで行われました。
古い構文:
[Test]
[ExpectException(typeof(ExceptionType))]
public void TestExceptionType()
{
}
現在、NUnitはバージョン2.5.2をリリースしましAssert.Throws( Type expectedExceptionType, TestDelegate code );
た。これにより、例外テストがはるかに柔軟になります。例外テストは次のようになります。
新しい構文:
[Test]
public void TestWithNullBufferArgument()
{
ArgumentNullException ex = Assert.Throws<ArgumentNullException>(() => _testInstance.TestFunction(null));
// now you can examine the exception and it's properties
Assert.AreEqual(ex.Message, "Argument was null");
}
私たちの問題は、Assert.Throwsが使用されている場合、NUnit(コンソールまたはGUIランナー)がプログラムのデバッグに使用されているときに、VisualStudioが未処理の例外を示すウィンドウを表示することです。
これを明確にするために、デバッグ時にnunit-x86.exeを実行するように単体テストを含むVSプロジェクトを設定しました。(プロジェクトのプロパティ、デバッグタブを参照してください。開始アクションは、nunit-x86.exeを実行するように設定されています)
これにより、NUnitはテストを続行できなくなります。F5キーを押してデバッグ/単体テストを続行することは可能ですが、これは実行可能な解決策ではありません。
これを回避する方法はありますか?Assert.Throwsの周りにtry...catchブロックを配置すると、デリゲートコードで例外が発生するため、何も実行されません。
誰かがこれに光を当てることができることを願っています。