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


次に NUnitGUI の設定。
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 ってクラスが見つからなくて、コンパイルエラーになるんだよな。。
うーん、よくわからん。。。