.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」

TechTargetジャパン

Insider.NET フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ


- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

第2回 ヒートマップでLPO――ヒートマップの登場で“in-page web analytics”時代に突入したLPO
ヒートマップがWebサイト分析の現場に登場したことで、LPOは、“in-page web analytics”...

ダウンロードフリー! 「戦略リーダーとしてのマーケティング組織、CMO機能」(eBook版)
「ITmedia マーケティング」編集部では、過去の人気連載をeBook 形式に再編集した新シリ...

第1回 なぜ、いま、DMPなのか?
最近のデジタルマーケティング分野における重要キーワードにDMP(Data Management Platfo...