[NUnit 2.5] TestCaseAttribute の使いかた
NUnit 2.5 で増えた機能の一つに TestCase 属性があります。
御本家のドキュメントを見ると…
[TestCase(12,2, Result=6)]
[TestCase(12,4, Result=3)]
public int DivideTest(int n, int d)
{
return( n / d );
}
…こんな使いかたが載っています。
属性の引数が、 テストメソッドの引数として順次渡されるようですね。
通常のテストメソッドは void ですが、 値を返すようにしてやると、 属性の名前付き引数 Result と比較してくれるみたいです。
属性の名前付き引数としては、 ほかに TestName とか ExpectedException とかが取れるようです。
ということで、 試行錯誤してみました f(^^;
こんな風に書けます。
[Test(Description = "GetGreet() のテスト5: 20:00 <= t < 24:00")]
[TestCase(20, 0, 0, 0, Result = "Good night", TestName = "t=20:00")]
[TestCase(22, 0, 0, 0, Result = "Good night", TestName = "t=22:00")]
[TestCase(23, 59, 59, 999, Result = "Good night", TestName = "t=23:59:59.999")]
public string GetGreetTest05_20To24(int h, int m, int s, int ms)
{
DateTime input = new DateTime(2009, 6, 9, h, m, s, ms);
return MyClass.GetGreet(input);
}
[Test(Description = "GetGreet() のテスト6: t == 24:00")]
[TestCase(24, 0, 0, 0, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "t=24:00")]
public string GetGreetTest06_24(int h, int m, int s, int ms)
{
DateTime input = new DateTime(2009, 6, 9, h, m, s, ms);
return MyClass.GetGreet(input);
}
※ この 2つのテストメソッドは、 ひとつにまとめて書くこともできます。 テストケースごとに 1メソッドという書き方をしたので、 分けてあります。
引数を変えて何回もテストケースを走らせるときには、 すごく便利です。 上側の GetGreetTest05_20To24() では、 テストは引数を変えて 3回実行されます。
Visual Studio 2008 にも似たような仕掛けはありますが、 テストが、 データベース ( ODBC ドライバでつながるなら何でもいいので、 Excel も使える ) とテスコードに分かれてしまうのが、 ( このくらい簡単なテストだと ) 泣き所。
なお、 属性の引数には定数しかダメなので、 [TestCase(new DateTime(… とは書けませんでした。
TestName は、 NUnit GUI に表示される ( 下図参照 ) ので、 重宝しそうです。
Description は、 NUnit GUI ではプロパティを出さないと見えないので、 あまり役に立たないかもしれませんね。
テストメソッド中で例外が出る場合は、 Result の代わりに ExpectedException を書いておけば OK です。
| 固定リンク
« [プログラム設計事始] メソッドの外部設計とテストファースト(2) ~ なんでもユニットテストで記述できるか? | トップページ | MSDN ライブラリに VS2010 のドキュメントが公開されている »
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
この記事へのコメントは終了しました。
コメント