ダウンロード サンプルソース(C#) (29.1 KB)
ダウンロード CsTdd03__20130403.zip (29.0 KB)
NUnitの最新バージョン2.6の主な機能を解説します。普段からNUnitを使っている開発者でも、「こんな機能があったのか!」と驚くようなことがきっとあるでしょう。
はじめに
C#でTDDしている開発者にとって、おそらく一番なじみのあるテスティングフレームワークはNUnitでしょう。今年の2月に、そのVersion 2.6が正式リリースされました。2.x系はこれが最後のリリースとなり、次はVersion 3になるとされています(NUnit Roadmap参照)。この機会に、NUnitの基本機能から、2.6で追加された新機能まで、全体を一通り把握しておきましょう。
本記事では、TDDの話からは離れて、NUnitの機能の紹介だけをします。それでも膨大な量がありますので、記事では概要を述べるだけに留めてサンプルコードの掲載を省略した部分がかなりあります。ぜひサンプルソースもダウンロードして読んでください。また、まず使わないだろうと思われる機能や、Assert.That()で使うたくさんの制約・修飾子なども説明していませんので、さらに深く学びたい方はNUnitのドキュメント(英文)をあたってください。
対象読者
- TDDに興味をお持ちの.NET Frameworkの開発者。
- テストの自動化に興味をお持ちの.NET Frameworkの開発者。
必要な環境
サンプルコードを試してみるには、C# 2010(Expressで可)とNUnit 2.6が必要です。本稿執筆時点では、下記から入手できます。
- C# 2010 Express: Microsoft Visual Studio Express
- NUnit 2.6: NUnit V2 2.6.0
- NUnitのインストール手順: NUnit 2.5 の導入 Step by Step(筆者サイト、旧バージョンでの説明ですが基本的に同じです)
これだけで、どんなテストだって書ける! ~ Assert.IsTrue()
(サンプルコード:「その01_基本」クラス)
自動化されたユニットテストを作るには、プログラムを実行してみて期待通りの結果が得られたかどうかを判定するというコードを書きます。NUnitでは、3つのことを知っていれば、極端な話ですがどんなテストでも書くことが可能です。
TestFixture属性:テストクラスに付けるTest属性:テストメソッドに付けるAssert.True()(またはIsTrue())メソッド
Assert.True()の使い方[TestFixture] public class その01_基本 { [Test] public void Test01_IsTrueだけ知っていればどんなテストだって書ける() { var 期待値 = 3; //実行した結果こうなるはず、という値。即値(リテラル)で書く。 var 実際の値 = 整数.加算する(1, 2); //テスト対象を実行して、結果を取り出す。 Assert.True(期待値 == 実際の値); //実行した結果を検証する } }
NUnitのテストランナー(nunit.exe)は、TestFixture属性の付けられたクラスにユニットテストが記述されていると認識し、Test属性の付けられたメソッドを抽出して実行します。実行して、メソッド中のAssertクラスに対する呼び出しが例外を出したらテストは失敗(RED)、そうでなければ成功(GREEN)とレポートします。Assert.True()では、引数がfalseだったら失敗とレポートされます。
なお、Assert.True()に限らずAssertクラスが持っている検証のためのメソッド(アサーション)には、失敗時に指定したメッセージを出すためのオーバーロードがたいてい用意されていますので、有効に活用してください。
var n = 3; var m = 4; Assert.True(n == m, "{0}と{1}は等しくありません。", n, m); /* [実行結果]
CsTdd03Tests.その1_基本.Test01B_失敗時のメッセージ2_RED:
3と4は等しくありません。 Expected: True But was: False */
- 修正履歴
-
- 2013/04/03 13:13 p.2 Test03_IsNullメソッドで使っているアサーションがNull()になっていました。IsNull()に訂正しました。
- 2012/04/27 14:54 p.6「Theory属性とDatapoints属性」の説明とコードを訂正
- 2012/04/02 13:02 初稿完
この記事は参考になりましたか?
- C#で始めるテスト駆動開発入門連載記事一覧
- この記事の著者
-
biac(ばいあっく)
HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

