.NET Tools

テスト駆動開発ツール最前線(後編)

− Mockオブジェクトを使ったNUnit 2.2によるテスト −

(株)ピーデー 川俣 晶
2004/11/17
Page1 Page2 Page3

 前編では、テスト駆動開発ツールNUnitの新版であるNUnit 2.2の新機能について紹介した。今回は、NUnit 2.2の新機能の中でも最も注目すべき「Mockオブジェクト」と、NUnit 2.2によるテストを支援する2つのツール「Test Driven .NET」と「NMock」について解説する。

Test Driven .NETによる統合されたテスト

 前編で見てきたように、NUnitのGUIテストランナーも進化しているが、Visual Studio .NET(以下、VS.NET)で開発していると、いちいち別ウィンドウを見るのは面倒である。VS.NET内部でNUnitのテストを実行する方法はないものか。それを実現するためのソフトとして、Test Driven .NETが存在する。これは、かつて「NUnitAddIn」と呼ばれていたものである。

 Test Driven .NETは、NUnitのほかに以下のフレームワークなどにも対応する。

  • Visual Studio 2005 Team System
  • MbUnit(単体テスト・フレームワーク。)

 また以下の開発環境に対応する。

  • Visual Studio .NET 2002
  • Visual Studio .NET 2003
  • Visual Studio 2005
  • Visual C++ Express
  • Visual C# Express
  • Visual Web Developer Express
  • Visual Basic Express

 インストール方法は簡単なので詳しい説明は割愛する。すでにVS.NET 2003がインストールされていれば、インストール画面で「Typical」を選択するだけで、特にインストール先のディレクトリを選択する画面を見ることなく、すぐに終わるだろう。なお、ここではTestDriven.NET-0.9.670-RC1.msiを使用している。

 使用方法は簡単である。Test Driven .NETのインストール後にVS.NETを開き、テストを含むプロジェクトを開く。ここで、ソリューション・エクスプローラ内のプロジェクト名を右クリックすると、[Run Test(s)]というメニューが増えている。これを選ぶと、テストが実行され、結果がVS.NET内の[出力]ウィンドウに表示される。以下はそれを行った例である。

Test Driven .NETを用いたVS.NET内でのテスト実行
Test Driven .NETをインストールすれば、VS.NET内からNUnitのテストを実行し、その結果を[出力]ウィンドウで確認することができる。

 しかし、この程度なら、GUIテストランナーを使っても大差はない。要するに、テストのプロジェクトの設定として、デバッグ時にGUIテストランナーを実行するような設定を仕込んでおけばよいだけのことである。これで[F5]キーを叩くだけでテストを実行できる。

 そうではなく、Test Driven .NETの真価は、むしろ特定のテスト・メソッドの実行にあると筆者は感じる。例えば、特定の1つのテスト・メソッドを実行したいとしよう。特定の1つのテスト・メソッドの実行は、特定メソッドがテストをパスするまでソースを修正するケースや、テスト・メソッドのデバッグのケースで、よく行う作業といえる。

 GUIテストランナーでも、特定のメソッドを選択しておけば、後はRunボタンをクリックするだけでそれを実現できる。しかし、Test Driven .NETはもっと便利なのである。何と、コード・エディタ上のテスト・メソッドのメソッド名を右クリックすると、それを実行する[Run Test(s)]というメニュー項目が出現するのである。

コード・エディタ上からのテスト・メソッドの実行
Test Driven .NETでは、コード・エディタ上のテスト・メソッドのメソッド名を右クリックすれば、そのテストを実行できる。

 テスト・メソッドを修正してからそれを実行する場合、別ウィンドウのツリーの中から求めるメソッドを探す必要はなく、いままさに修正したばかりのソース・コード上のメソッド名を右クリックすればよいのである。この手軽さ、便利さは使い始めると手放せない。

 また、テストはフレームワーク経由で実行しなければならないため、デバッガでコードを追跡するような場合には、GUIテストランナーを実行ファイルとして指定する手間が発生する。これが意外と面倒な作業になる。しかし、これもTest Driven .NETを使うと容易になる。メソッド名の上で右クリックした後、[Run Test(s)]ではなく、[Test With]−[Debugger]を選ぶ。

デバッガを併用する場合のテスト実行
テスト・メソッドをVS.NETのデバッガを使って実行する場合には、これまでGUIテストランナーを実行ファイルとして指定する必要があったが、Test Driven .NETを使うとそれがメニューから簡単に行える。

 これでVS.NETのデバッガによってテスト・メソッドが実行される。ブレークポイントを仕掛けておけばそこで停止してくれるので、変数の値を調べたり、トレース実行したりすることができる。

 さて、Test Driven .NETを使うと結果が文字で表示され、赤、緑、黄色といった色を見ることができなくなる。その結果、テスト駆動開発のレッド→グリーン→リファクタリングというリズムが直感的に分かりにくくなる。しかし、慣れればレッドやグリーンはその色を見ることが目的ではなく、それに対応する状態を得ることが重要だと実感できる。それが実感できれば、むしろ色抜きで“4 succeeded, 3 failed, 2 skipped”というようにコンパクトに結果を表示するTest Driven .NETも悪くないと思えるだろう。


 INDEX
  [.NET Tools]
  テスト駆動開発ツール最前線(前編)
     1.プログラム開発の効率をアップするための方法
     2.GUIテストランナーとテストのための新機能(1)
     3.GUIテストランナーとテストのための新機能(2)
  テスト駆動開発ツール最前線(後編)
   1.Test Driven .NETによる統合されたテスト
     2.Mockオブジェクトとは何か− NUnitのMockオブジェクト
     3.より高度なMockオブジェクトを実現するNMock
 
インデックス・ページヘ  「.NET Tools」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間