AutoMapper + NUnit 環境を作る
環境は Windows8 x64 + Visual Studio Professional 2012。
AutoMapper を試してみたかったんだけど、ちょこちょこ嵌ったのでメモ。
まず、プロジェクト作成で ASP.NET MVC を選択。プロジェクト名は「AutoMapperSample」とでも。
4 が使えるので 4 を選んだけどおそらく MVC3 でも同じはず。
次に NUnit 用のクラスライブラリプロジェクトをソリューションに追加。
「AutoMapperSampleTest」とした。
で、VSから「ツール」→「ライブラリパッケージマネージャー」→「パッケージマネージャーコンソール」と辿って、
NuGet で以下必要なライブラリをインストール。
PM> Update-Package PM> Install-Package AutoMapper PM> Install-Package NUnit
次に NUnit の GUI の設定。
TestDriven.Net を使ったら VS と連携できるとかあるみたいなんだけど、業務で使う場合はライセンス云々とかあるようなので、今回はパス。
NUnit の公式サイトからインストーラーをダウンロードしてインストール。
C:\Program Files (x86)\NUnit 2.6.2\bin の下に nunit.exe ってのがあるので叩くと、 .NET3.5 入れてーと言われる。.NET4以下は入れる気がないので、キャンセル。
同ディレクトリにある nunit.exe.config を開いて以下のように変更。
<startup useLegacyV2RuntimeActivationPolicy="true"> <!-- Comment out the next line to force use of .NET 4.0 --> <supportedRuntime version="v4.0" /> </startup>
これで nunit.exe が動くようになるので、開いたら「Tools」→「Settings」→「IDE Support」で「Enable Visual Studio Support」にチェックを入れる。
これで nunit.exe から Visual Studio のプロジェクトファイルが開けるようになりますです。
あとはテストコードとアプリコードを書くだけ。
AutoMapper のサンプルコードは以下のサイトを参考にさせていただきました。
Model・ViewModelのマッピングに便利なAutoMapper
テストコードで1つ嵌ったことがあって、各テストコードは1つずつだとオールグリーンになるんだけど、クラス単位でテスト実施するとエラーになる。
色々と調べたんだけど、マッピング前にリセット処理を入れるとオールグリーンになるようになった。
[SetUp] public void Setup() { Mapper.Reset(); }
今回は上記のようにテスト毎にリセットしてるんだけど、、、これってアプリ側で色んなオブジェクトをマッピングするとき、毎回実施前にリセットが必要ってことかな?
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~ や AutoMapper + ViewModel In MVC その2 を参考にさせていただいたのだが、ここで出てくる
Mapping.AutoMapperBootstrapper.Configure();
ってのが怪しいんだけど、 Mapping ってクラスが見つからなくて、コンパイルエラーになるんだよな。。
うーん、よくわからん。。。