ダウンロード CsTdd08.zip (125.1 KB)
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です。
この記事は参考になりましたか?
- C#で始めるテスト駆動開発入門連載記事一覧
-
- 状態を持つクラスをテストファーストする
- ユニバーサルWindowsアプリのユニットテスト(後編)
- ユニバーサルWindowsアプリのユニットテスト(前編)
- この記事の著者
-
biac(ばいあっく)
HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア



![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)
