今更NUnit、あるいはxUnitについて語ることは意味がないでしょうが、分からない人は先に私が以前に書いたNUnit入門 Test Firstのススメ [NUnit 2.0対応版]などを参照してください。
NUnitのここが不満 §
さて、NUnitには、コマンドラインで使うコンソール用のツールと、GUIツールがあります。実はコンソール用のツールの方はちょっと機能が少なくて、使い勝手も良くなく、GUIツールばかり使っていたわけですが。これが使いやすいかというと、そうでもありません。表示されたソースファイル名と行番号から、編集画面に一発で飛んでいけないということは我慢するとしても、長く伸びたメッセージを読むのはちょっと実用性を欠くぐらい面倒でした。長い文字列比較のアサートで失敗すると、そういうメッセージを見る羽目になるのです。
そのため、何とかしたいという気持ちがありました。
今日は、理由もないのに、そのためのチャレンジを行うことになりました。
Visual Studio.NET用のNUnitアドインを試す §
前からこのソフトの存在は知っていました。
NUnit Addin for Visual Studio.NET
Visual Studio.NETに組み込んで使うアドインソフトです。NUnitのテストをVisual Studio.NET内で実行します。
本当はもっと早く試しているべきだったソフトです。まあ、試していない訳ではなく、前に1回チャレンジしたときは不明の理由で動かなくて、その後放置されていたような気がします。しかし、今日入れてみると、サクッと動きました。インストールは特に指定する必用のある項目もなく、すぐ終わりました。
何をしてくれるのか §
ソリューションエクスプローラでプロジェクト名を右クリックすると、Run Testsという項目が増えているので、これを選びます。すると、ビルドとテストの実行が自動的に行われ、結果が出力ウィンドウに表示されます。
たとえば、以下のような感じです。
------ Test started: Assembly: TestMagSite.dll ------
TestCase 'TestMagSite.TestFileLayout.GetAuthMasterFileName1' failed:
String lengths differ. Expected length=26, but was length=0.
Strings differ at index 0.
expected:<c:\test$$$\auth\master.xml>
but was:<>
----------^
d:\w\inet\magsite1\src\testmagsite1\testfilelayout.cs(312,0): at TestMagSite.TestFileLayout.GetAuthMasterFileName1()
275 succeeded, 1 failed, 0 skipped, took 22.45 seconds.
---------------------- Done ----------------------
ここに、赤や緑のバーはありません。しかし、ファイル名が出力された行のダブルクリックでその行に一気に飛んでいけるし、長い文章も扱いやすくなっているし、かなりの改善です。
テスト実行の手間も軽くなります。
以前は、テストを納めたクラスライブラリのプロジェクトのデバッグ情報にNUnitを起動する指定を入れて、このプロジェクトをスタートアッププロジェクトに切り替えてからF5を押していたわけですが。もはや、デバッグ情報にNUnitを起動する指定を入れる必用がありません。おそらく、もうスタートアッププロジェクトに切り替えることも無いでしょう。右クリックからの起動のメニュー階層も浅くなったので、右クリックでテスト実行させる方が楽そうだからです。そうすると、プログラム本体を実行させるためにスタートアッププロジェクトを切り替える手間もなくなります。
特定のテストメソッドだけを実行させるには §
しかし、この方法ではプロジェクト単位でしかテストを実行できません。
全部実行すると、(現在の)MagSite1(MagSiteLib.dll)のテストでは、23秒ほど掛かります。これは待ち時間としては長いので、単体のテストメソッドだけ実行する機能が欲しいところです。
そういう機能が無いかな、と思ってソースコード上のメソッド名を右クリックすると、何とそこにRun Testsが。これを選ぶと、特定のテストメソッドだけが(ビルド後に)実行されます。これでもう、特定のテストだけ繰り返しながら開発するのもラクチンです。
これは良さそう §
これは素晴らしい、面白いものです。
本当にどの程度の実用的に使えるものか、このアドインをしばらく使い込んでみようと思います。