Windows Phoneストアアプリ用のユニットテストプロジェクトを追加する
今度は、Windows Phoneストアアプリ用のユニットテストプロジェクトを追加します。新しいプロジェクトを追加するダイアログの左側では[インストール済み]-[Visual C#]-[ストア アプリ]-[Windows Phone アプリ]を選びます。そして、ダイアログの中央で[単体テスト アプリ (Windows Phone)]を指定します。
このユニットテストのプロジェクトには、次のプロジェクトへの参照設定をしておきます。
- ユニバーサルプロジェクトのWindows Phoneストアアプリ用プロジェクト
- PCLのプロジェクト
- WinMDのプロジェクト
ビルド構成を調整する
ここで、ソリューションのビルド構成を確認してください(メニューの[ビルド]-[構成マネージャー])。Windows Phoneストアアプリ用のユニットテストプロジェクトを追加したことで、次の画像のように[Mixed Platforms]に変わってしまっているはずです。
通常は製品コードをCPU依存にしたくないので、Windows Phoneストアアプリ用ユニットテストプロジェクトを除いて、[Any CPU]に変更しておきます(次の画像)。また、Windows Phoneストアアプリ用のユニットテストを実機で実行したいときには、Windows Phoneストアアプリ用ユニットテストプロジェクトを[ARM]にします([x86]はエミュレーター用)。
ユニットテストのプロジェクトを試してみる
先ほどWindowsストアアプリ用のユニットテストプロジェクトでやったように、ここでもCalcクラスのAddメソッドをテストファーストしてみましょうか……。ところがどうでしょう。3つのプロジェクトすべてでCalcクラスのAddメソッドはすでに作られています(共有プロジェクトに置いたCalcクラスは、Windows Phone用のプロジェクトにも共有されている)。この話は、後ほど改めて考えることにして、ここではWindows Phone用のユニットテストの実行方法だけを紹介しておきます。
Windows Phone用のユニットテストは、エミュレーターか実機で実行されます。デフォルトはエミュレーターになっています。実機で実行したい場合は、ユニットテストのプロジェクトをスタートアッププロジェクトに設定してから、上部のツールバーで[Device]を選択します(エミュレーターで実行するなら、この操作は不要)。
Windows Phoneストアアプリ用のユニットテストプロジェクトを追加した際に自動生成された「UnitTest1.cs」ファイルを開き、次のように1行追加します。
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
Assert.Inconclusive(); // 1行追加した
}
}
Assert.Inconclusiveメソッドは、テストできなかったという結果になるはずです。
それではユニットテストを実行してみましょう。Windowsストアアプリ用と同じく、テストエクスプローラーで[すべて実行]をクリックすればよいです。すると、自動的にエミュレーターが立ち上がって、ユニットテストが実行されます。想定通りの結果になればOKです。



![Windows Phoneストアアプリ用ユニットテストプロジェクト以外は[Any CPU]に戻しておく](http://cz-cdn.shoeisha.jp/static/images/article/8035/fig14s.png)
![Windows Phoneの実機でユニットテストをする場合は、[Device]を選ぶ](http://cz-cdn.shoeisha.jp/static/images/article/8035/fig15s.png)
