ムイ

日記とメモと愚痴

vs2010 C# ExpressでNUnit 2.6.2を使用する

Microsoft Visual C# 2010 ExpressでNUnit 2.6.2を使用してみました。

使用した環境はWindows 7 64bit Professionalです。

いくつか詰まった点をメモしておきます。

NUnitのインストールについて

NUnitのサイトから。私が使用した時の最新版は2.6.2でした。

http://www.nunit.org/

Downloadページに有るのmsiをダウンロード、インストールします。

インストール構成はTypicalを選択しました。

するとWindowsのスタートメニューにNUnit 2.6.2の項目が現れます。

(後述しますが、ここのショートカットは使用出来ません)

NUnitを動作させるサンプルプロジェクトの作成

 VS2010からシンプルなフォームアプリケーションを作成しました。

テキストボックスの内容をボタンを押すと足しあわせて表示するというものです。

合わせて、NUnitのQuickstartのページに書いてあるとおりに、テストを示す属性を追加したテストクラスを作成しました。

NUnit.Frameworkはインストール時に参照一覧に登録されるのか、参照の検索ですぐ見つけることができます。

f:id:kuramiya2:20130618222025p:plain

 f:id:kuramiya2:20130618221725p:plain

 NUnit GUIを使用してテストを実行する

スタートメニューのショートカットからNUnit.exeを実行して、Open Projectボタン押して、作成されたexeファイルをロードしてみます。

しかし、失敗しました。

f:id:kuramiya2:20130618221927p:plain

Test load failed!

System.BadImageFormatException

メッセージからして.NETのバージョン設定でもあるのかと設定項目を探りましたが、該当する部分は見つかりませんでした。

あるいは、サンプルではdllファイルをテストファイルにしているのでもしかするとexeではダメなのかとクラスライブラリのコンパイルに切り替えたりしましたが、効果なしです。

ただ、調べればすぐ原因は見つかりました。

https://groups.google.com/forum/?fromgroups#!topic/nunit-discuss/XK9aBad89xk

http://stackoverflow.com/questions/3668568/nunit-problem-loading-exe

VS2010 C# Expressの場合、デフォルトのコンパイルターゲットはx86となっています。このアセンブリのテストのためには、NUnitx86用のものを使用する必要がある、ということらしいです。

Program Files(x86)内にあるNUnitのフォルダ内を探しに行くと、目当ての物があります。

f:id:kuramiya2:20130618222652p:plain

スタートメニューのショートカットは、nunit.exeを呼び出しますが、この場合必要なのはnunit-x86.exeです。

これを実行して、再度exeをロードしてみます。

f:id:kuramiya2:20130618222829p:plain

あれ?おかしい。

This assembly was not built with any known testing framework.

NUnitが動かせるテストフレームワークに合致しているものじゃない、つまりテスト項目がないと言われてしまいました。

これは単純なミスでした。

VS2010 ExpressはDebugとReleaseの切り替え機能がなく、デバッグの実行でDebugのビルド、ビルドボタンでReleaseがビルドされます。

うっかりテストを実装する前のDebugにあるexeファイルをロードしていました。

再度デバッグ設定でデバッグを実行したあと、exeファイルをロードしました。

f:id:kuramiya2:20130618223256p:plain

無事読み出せました。

Runボタンでテストの実行も問題なくできました。

試しに間違えたテスト実行したところ、間違いを正しく検出してくれます。

感想、今後について

C#のテストと言えばVisual Studio Professionalについてきている単体テスト機能しか使ったことがありませんでした。しかも仕事です。

プライベートで高価な開発環境を購入する前に無償のNUnitを試してみましたが、思った以上に使いやすい印象を受けます。

ボタンひとつでテストスイートを作成するVisual Studio単体テスト機能に手軽さでは負けますが、逆におせっかいなところや気持ち悪い部分がない点で、NUnitの方が好印象です。

 

オプション項目を見る限り、VS環境連携や、その他レポートの出力方法、テストのカテゴリ分け?などまだまだ便利な機能がありそうです。

今後機会があれば、それら機能を使用してみようかと思います。