2012年5月26日土曜日

NUnitをインストール

今までVisual C# 2010 Expressを使用していて単体テストツールは入っていませんでした。 「ちょっとは触っておいた方がいいかなぁ」と思ったので試しにVisual Studioで外部ツールとして使えるNUnitを入れてみました。

環境は、

  • Windows 7 home 64bit
  • Visual C# 2010 Express
  • NUnit 2.6.0.12051

まずはNUnitをオフィシャルサイトから落としてきて普通にインストール。 次に、Visual Studioのツールメニューから「外部ツール」をクリック。 NUnitを登録します。 取りあえずx86版だけ使えればいいのでこんな感じで登録。

  • タイトル : NUnit(x86)
  • コマンド : インストール先フォルダ\NUnit 2.6\bin\nunit-x86.exe
  • 引数 : /run $(ProjectDir)$(ProjectFileName)
  • 初期ディレクトリ ; $(ProjectDir)

あとはNUnitのヘルプを見ながら適当にサンプルのテスト。 「NUnit Quick Start」のページを見てbankのアレで試してみました。

新しいプロジェクトでbankソリューションを作成。 Account.csを追加して...

ってここまで書かなくてもいいか。 適当にコードをコピー&ペーストします。 本番プロジェクトとテストプロジェクトのディレクトリを分けたいので、プロジェクトの保存のときに「ソリューションのディレクトリを作成」にチェックを入れるの推奨。

続いて、テストプロジェクトを作成。 テストプロジェクトはクラスライブラリにしましょう。 ソリューションエクスプローラから「ソリューション'bank'」を右クリックして追加→新しいプロジェクト→クラスライブラリ→bankTestプロジェクトを追加します。 参照設定で以下の参照を追加。

  • .NETタブ : nunit.framework
  • プロジェクトタブ : bank(テスト対象)プロジェクト

AccountTestクラスをヘルプドキュメントからコピー&ペースト。 ビルドしてツールメニューからさっき選択した「NUnit(x86)」を実行...

ダメでした。 警告ダイアログが出ます。 色々検索&試行錯誤してたらこんなブログ記事を発見。

このブログによると、nunit.exe.configを書き換えないと.NET Framework 4のランタイムが使えないらしい。 私の環境ではnunit.framework.dllの読み込みエラーは発生せず。 そういうわけでnunit.exe.configの書き換えだけやりましょう。 「インストール先フォルダ\NUnit 2.6\bin\nunit.exe.config」を適当なディレクトリにコピーして、テキストエディタでsupportedRuntime version="v2.~"をコメントアウト → 元のファイル上書き。 実行したらちゃんと単体テストができました。

ってアレ? 「外部ツール」に登録したのはnunit-x86.exeですよね? なんでnunit-x86.exe.configじゃないんだろ? あ、最初はnunit.exeを登録したけど試行錯誤中に変更したのか。

nunit.exe.configのコメントアウトを元に戻したらちゃんと動いていたり...

え~と、ちゃんと経過をメモしてなかったからよく分からなくなってしまったけど、

  • 外部ツールの登録は↑の通りでOK。
  • それで動かなかったらnunit.exe.configまたはnunit-x86.exe.configも書き換えてみてね。

ってことで1つ。