.NET Tools テスト駆動開発ツール最前線(後編) − Mockオブジェクトを使ったNUnit 2.2によるテスト − (株)ピーデー 川俣 晶2004/11/17 |
||
|
前編では、テスト駆動開発ツール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」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|