SHOEISHA iD

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

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

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

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

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

  • このエントリーをはてなブックマークに追加

ダウンロード CsTdd09.zip (129.9 KB)

 WindowsストアとWindows Phoneストアの両方で配布できるのが「ユニバーサルWindowsアプリ」です。そのユニットテストの方法には、従来のデスクトップアプリとはちょっと違う部分があります。Windowsランタイム用のMSTestを使ってユニットテストを行う方法を前後編に分けて紹介します。この後編では、MSTestの新機能などを説明します。

  • このエントリーをはてなブックマークに追加

はじめに

 ユニバーサルWindowsアプリを作るために新しく用意されたVisual Studioの「ユニバーサルプロジェクト」は、今までになかったソリューション構成です。そこで今回は、プロジェクトを作るところからユニットテストの方法を解説していきます。また、ユニットテストフレームワークにはVisual Studioに標準装備されているMSTestを使いますが、利用するライブラリーが従来のものとは異なっています。その新機能であるパラメタライズドテストなども紹介します。

前編

  1. ユニバーサルWindowsアプリとユニバーサルプロジェクトについて
  2. ユニバーサルプロジェクトにユニットテストのプロジェクトを追加する方法
  3. 同じユニットテストをWindowsとPhoneでいっぺんに実行する方法

後編:

  1. ユニットテストを共有プロジェクトに置く方法(有償版限定)
  2. 非同期メソッドのユニットテスト
  3. Windowsランタイム用のMSTestライブラリーの新機能とその使い方

 なお、UI操作の自動実行(自動化されたUIテスト)は扱いません。

 この後編では、共有プロジェクトを作ってそこにユニットテストを置く方法と、MSTestの新機能を説明します。

対象読者

  • TDDに興味をお持ちのWindowsストアアプリ開発者/Windows Phoneアプリ開発者。

必要な環境

 サンプルコードを試してみるには、Visual Studio 2013のUpdate 2以降が必要です(無償のExpressで可)。本稿執筆時点では、下記から入手できます。この記事では一部を除き、Visual Studio Express 2013 with Update 3 for Windowsを使用しています。

開発環境の入手先

 OSにはWindows 8.1が必要です(2014年4月のアップデート、通称「Update 1」が必須)。さらに、Windows Phoneのユニットテストを実行するためには、64bit版Windows 8.1のPro版以上とSLAT対応のPCが必要になります。
 

 なお、Expressエディションは複数存在していてまぎらわしいのですが、「for Windows」を使います。「for Windows Desktop」は、WPFとWindows Formsの開発用です。

4.ユニットテストを共有プロジェクトに置く方法(有償版限定)

 前編では、ユニットテストのプロジェクトには共有プロジェクトがないと書きました。しかし、それを実現するツールがあります。Visual Studioの拡張機能として提供されているため、残念ながら無償のExpressでは利用できず、有償のProfessional版以上が対象です。また、対応言語は、C#/C++/JavaScriptです(VBは未対応)。

Shared Project Reference ManagerのWebページ
Shared Project Reference ManagerのWebページ

 実際に導入して試してみましょう。ここでは、Visual Studio Ultimate 2013を使います。

 Shared Project Reference Managerをインストールするには、上のWebページからダウンロードしてもよいのですが、次のようにしてVisual Studioの中から行うこともできます。

 メニュー[ツール]-[拡張機能と更新プログラム]を選び、[拡張機能と更新プログラム]ダイアログを出します。その左側で[オンライン]を選び、右上の検索ボックスに「Shared Project」などと入力して検索します(次の画像)。

[拡張機能と更新プログラム]でShared Project Reference Managerを検索する
[拡張機能と更新プログラム]でShared Project Reference Managerを検索する

 Shared Project Reference Managerが見つかったら、それを選択し、その右に出てきた[ダウンロード]ボタンをクリックすると、インストールされます(インストール後に、Visual Studioの再起動が必要)。

 それでは、前回の終了時点のソリューションを開きましょう。

 Shared Project Reference Managerのインストール後は、新しいプロジェクトを追加するときに[Shared Project]が選べるようになっています(次の画像)。

新しいプロジェクトを追加するときに[Shared Project]が選べる
新しいプロジェクトを追加するときに[Shared Project]が選べる

 ユニットテスト用の共有プロジェクトを作ったら、Windows用とPhone用のそれぞれのテストプロジェクトに、共有プロジェクトへの参照を追加します。それには、ソリューションエクスプローラーでプロジェクトを右クリックして[追加]-[Shared Project Reference]を選び(次の画像)、出てきた[Shared Project Reference Manager]ダイアログで、参照したい共有プロジェクトにチェックを入れて[OK]します(その次の画像)。

プロジェクトを右クリックして[追加]-[Shared Project Reference]
プロジェクトを右クリックして[追加]-[Shared Project Reference]
参照したい共有プロジェクトにチェックを入れる
参照したい共有プロジェクトにチェックを入れる

 ユニットテスト用の共有プロジェクトへの参照設定も終わったら、プロジェクト構成の変更は完了です。前回Windows用のテストプロジェクトに作成した「UnitTest1.cs」ファイルを、共有プロジェクトに移動しましょう。また、Phone用のテストプロジェクトに置いた、「UnitTest1.cs」ファイルへのリンクは削除します。

 これで、テストエクスプローラーで[すべて実行]をクリックすれば、前回の最後と同様に、CalcクラスのAddメソッドのテストが、Windowsストアアプリの環境と、Windows Phoneの環境でいっぺんに実行されます(次の画像)。

共有プロジェクトに置いたユニットテストを実行した
共有プロジェクトに置いたユニットテストを実行した

 このようにして作成したユニットテストの共有プロジェクトは、Expressからも利用できます。これ以降はExpressに戻ります。

Visual Studio "14" CTP3

 次期Visual Studioである"14"のCTP(Community Technology Previews)3が、8月18日にリリースされました。これには、Shared Project Reference Managerと同等の機能が搭載されています。また、VBでも共有プロジェクトの作成が可能になっています(次の画像)。この機能がExpressにも提供されるかどうかはまだ分かりませんが、ぜひとも提供してほしいものです。

 

VS "14" CTP3では、自由に共有プロジェクトを作成できる(VBでも)
VS

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
5.非同期メソッドのユニットテスト

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

  • このエントリーをはてなブックマークに追加
C#で始めるテスト駆動開発入門連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8093 2014/10/08 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング