NUnitの全貌 ~ 基本から、最新バージョンの新機能まで

CodeZine / 2012年4月13日 14時0分

NUnitの最新版バージョン2.6のテストランナー(nunit.exe)

 NUnitの最新バージョン2.6の主な機能を解説します。普段からNUnitを使っている開発者でも、「こんな機能があったのか!」と驚くようなことがきっとあるでしょう。

■はじめに

 C#でTDDしている開発者にとって、おそらく一番なじみのあるテスティングフレームワークはNUnitでしょう。今年の2月に、そのVersion 2.6が正式リリースされました。2.x系はこれが最後のリリースとなり、次はVersion 3になるとされています(NUnit Roadmap参照)。この機会に、NUnitの基本機能から、2.6で追加された新機能まで、全体を一通り把握しておきましょう。

NUnitの最新版バージョン2.6のテストランナー(nunit.exe)


 本記事では、TDDの話からは離れて、NUnitの機能の紹介だけをします。それでも膨大な量がありますので、記事では概要を述べるだけに留めてサンプルコードの掲載を省略した部分がかなりあります。ぜひサンプルソースもダウンロードして読んでください。また、まず使わないだろうと思われる機能や、Assert.That()で使うたくさんの制約・修飾子なども説明していませんので、さらに深く学びたい方はNUnitのドキュメント(英文)をあたってください。

■対象読者

TDDに興味をお持ちの.NET Frameworkの開発者。 テストの自動化に興味をお持ちの.NET Frameworkの開発者。 ■必要な環境

 サンプルコードを試してみるには、C# 2010(Expressで可)とNUnit 2.6が必要です。本稿執筆時点では、下記から入手できます。

C# 2010 ExpressとNUnitの入手先、およびNUnitのインストール手順
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())メソッド その01_基本.cs: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クラスが持っている検証のためのメソッド(アサーション)には、失敗時に指定したメッセージを出すためのオーバーロードがたいてい用意されていますので、有効に活用してください。

その01_基本.cs:失敗時にメッセージを出す
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 */


■関連記事
リボンインターフェースでチャート表示を切り替える.NETアプリケーションの作成
NUnitの全貌 ~ 基本から、最新バージョンの新機能まで
Visual Studio 11 betaの単体テスト機能を使ってみよう!
既存システムを分析するコツは「システムの地図」を作ること
C#たんと学ぶ/わりと硬派なソフトウェア開発講座 第3回「Webアプリケーション」(前編)

■記事全文へ

CodeZine

トピックスRSS

ランキング