SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C#で始めるテスト駆動開発入門

ユニバーサルWindowsアプリのユニットテスト(前編)

C#で始めるテスト駆動開発入門(8)

ダウンロード CsTdd08.zip (125.1 KB)

Windows Phoneストアアプリ用のユニットテストプロジェクトを追加する

 今度は、Windows Phoneストアアプリ用のユニットテストプロジェクトを追加します。新しいプロジェクトを追加するダイアログの左側では[インストール済み]-[Visual C#]-[ストア アプリ]-[Windows Phone アプリ]を選びます。そして、ダイアログの中央で[単体テスト アプリ (Windows Phone)]を指定します。

Windows Phoneストアアプリ用のユニットテストプロジェクトを追加する
Windows Phoneストアアプリ用のユニットテストプロジェクトを追加する

 このユニットテストのプロジェクトには、次のプロジェクトへの参照設定をしておきます。

  • ユニバーサルプロジェクトのWindows Phoneストアアプリ用プロジェクト
  • PCLのプロジェクト
  • WinMDのプロジェクト

ビルド構成を調整する

 ここで、ソリューションのビルド構成を確認してください(メニューの[ビルド]-[構成マネージャー])。Windows Phoneストアアプリ用のユニットテストプロジェクトを追加したことで、次の画像のように[Mixed Platforms]に変わってしまっているはずです。

Windows Phoneストアアプリ用ユニットテストプロジェクトを追加するとビルド構成が変わる
Windows Phoneストアアプリ用ユニットテストプロジェクトを追加するとビルド構成が変わる

 通常は製品コードをCPU依存にしたくないので、Windows Phoneストアアプリ用ユニットテストプロジェクトを除いて、[Any CPU]に変更しておきます(次の画像)。また、Windows Phoneストアアプリ用のユニットテストを実機で実行したいときには、Windows Phoneストアアプリ用ユニットテストプロジェクトを[ARM]にします([x86]はエミュレーター用)。

Windows Phoneストアアプリ用ユニットテストプロジェクト以外は[Any CPU]に戻しておく
Windows Phoneストアアプリ用ユニットテストプロジェクト以外は[Any CPU]に戻しておく

ユニットテストのプロジェクトを試してみる

 先ほどWindowsストアアプリ用のユニットテストプロジェクトでやったように、ここでもCalcクラスのAddメソッドをテストファーストしてみましょうか……。ところがどうでしょう。3つのプロジェクトすべてでCalcクラスのAddメソッドはすでに作られています(共有プロジェクトに置いたCalcクラスは、Windows Phone用のプロジェクトにも共有されている)。この話は、後ほど改めて考えることにして、ここではWindows Phone用のユニットテストの実行方法だけを紹介しておきます。

 Windows Phone用のユニットテストは、エミュレーターか実機で実行されます。デフォルトはエミュレーターになっています。実機で実行したい場合は、ユニットテストのプロジェクトをスタートアッププロジェクトに設定してから、上部のツールバーで[Device]を選択します(エミュレーターで実行するなら、この操作は不要)。

Windows Phoneの実機でユニットテストをする場合は、[Device]を選ぶ
Windows Phoneの実機でユニットテストをする場合は、[Device]を選ぶ

 Windows Phoneストアアプリ用のユニットテストプロジェクトを追加した際に自動生成された「UnitTest1.cs」ファイルを開き、次のように1行追加します。

テストコード: Windows Phoneストアアプリ用の自動生成されたユニットテストに1行追加する
[TestClass]
public class UnitTest1
{
  [TestMethod]
  public void TestMethod1()
  {
    Assert.Inconclusive();  // 1行追加した
  }
}

 Assert.Inconclusiveメソッドは、テストできなかったという結果になるはずです。

 それではユニットテストを実行してみましょう。Windowsストアアプリ用と同じく、テストエクスプローラーで[すべて実行]をクリックすればよいです。すると、自動的にエミュレーターが立ち上がって、ユニットテストが実行されます。想定通りの結果になればOKです。

Windows Phoneのエミュレーターでユニットテストが実行できた
Windows Phoneのエミュレーターでユニットテストが実行できた

次のページ
3.同じユニットテストをWindowsとPhoneでいっぺんに実行する方法

この記事は参考になりましたか?

C#で始めるテスト駆動開発入門連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8035 2014/10/07 14:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー