NUnit 2.5で追加されたAssert.Throwsでの注意点
NUnit 2.5からAssert.Throwsというメソッドが追加されていて、インラインでエクセプションのテストができるように拡張されています。
こんな感じですね。
1: private void ExceptionDashimakuri(string a) {
2: if (a == null) {
3: throw new ArgumentException("a is Null !!");
4: }
5: }
6:
7: [Test]
8: public void TestExceptionDashimakuri() {
9: string a = null;
10: var ex = Assert.Throws<ArgumentException>(
11: () => ExceptionDashimakuri(a)
12: );
13: Assert.That(ex.Message == "a is Null !!");
14: }
インラインで想定されているExceptionが飛んできているか、その後Assert.That等によってメッセージ内容が適切か、Exceptionのソースが適切か等も確認することができます。
Assert.Throwsすばらしいですね。見事ですねという感じなのですが、テスト実行の時に一つだけ注意点があります。Visual Studio上でテスト実行する場合には「必ずDebug無しで実行する」事です。Debug実行してしまうとVisual Studioに例外がハンドルされていないって冷たく言われます。。。(常識ですよねそうですよね。。。30分ぐらい悩んじゃった。)
しかし、日本語の情報無いなー。
