SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C#で始めるテスト駆動開発入門

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

C#で始めるテスト駆動開発入門(3)


  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

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

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

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

対象読者

  • TDDに興味をお持ちの.NET Frameworkの開発者。
  • テストの自動化に興味をお持ちの.NET Frameworkの開発者。

必要な環境

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

C# 2010 ExpressとNUnitの入手先、およびNUnitのインストール手順

これだけで、どんなテストだって書ける! ~ 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 */

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
よく使うAssert.AreEqual()やIsNull()など

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
C#で始めるテスト駆動開発入門連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6518 2013/04/03 13:24

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング