はじめに
ユニバーサルWindowsアプリを作るために新しく用意されたVisual Studioの「ユニバーサルプロジェクト」は、今までになかったソリューション構成です。そこで今回は、プロジェクトを作るところからユニットテストの方法を解説していきます。また、ユニットテストフレームワークにはVisual Studioに標準装備されているMSTestを使いますが、利用するライブラリーが従来のものとは異なっています。その新機能であるパラメタライズドテストなども紹介します。
前編:
- ユニバーサルWindowsアプリとユニバーサルプロジェクトについて
- ユニバーサルプロジェクトにユニットテストのプロジェクトを追加する方法
- 同じユニットテストをWindowsとPhoneでいっぺんに実行する方法
後編:
- ユニットテストを共有プロジェクトに置く方法(有償版限定)
- 非同期メソッドのユニットテスト
- 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は未対応)。
実際に導入して試してみましょう。ここでは、Visual Studio Ultimate 2013を使います。
Shared Project Reference Managerをインストールするには、上のWebページからダウンロードしてもよいのですが、次のようにしてVisual Studioの中から行うこともできます。
メニュー[ツール]-[拡張機能と更新プログラム]を選び、[拡張機能と更新プログラム]ダイアログを出します。その左側で[オンライン]を選び、右上の検索ボックスに「Shared Project」などと入力して検索します(次の画像)。
Shared Project Reference Managerが見つかったら、それを選択し、その右に出てきた[ダウンロード]ボタンをクリックすると、インストールされます(インストール後に、Visual Studioの再起動が必要)。
それでは、前回の終了時点のソリューションを開きましょう。
Shared Project Reference Managerのインストール後は、新しいプロジェクトを追加するときに[Shared Project]が選べるようになっています(次の画像)。
ユニットテスト用の共有プロジェクトを作ったら、Windows用とPhone用のそれぞれのテストプロジェクトに、共有プロジェクトへの参照を追加します。それには、ソリューションエクスプローラーでプロジェクトを右クリックして[追加]-[Shared Project Reference]を選び(次の画像)、出てきた[Shared Project Reference Manager]ダイアログで、参照したい共有プロジェクトにチェックを入れて[OK]します(その次の画像)。
ユニットテスト用の共有プロジェクトへの参照設定も終わったら、プロジェクト構成の変更は完了です。前回Windows用のテストプロジェクトに作成した「UnitTest1.cs」ファイルを、共有プロジェクトに移動しましょう。また、Phone用のテストプロジェクトに置いた、「UnitTest1.cs」ファイルへのリンクは削除します。
これで、テストエクスプローラーで[すべて実行]をクリックすれば、前回の最後と同様に、Calc
クラスのAdd
メソッドのテストが、Windowsストアアプリの環境と、Windows Phoneの環境でいっぺんに実行されます(次の画像)。
このようにして作成したユニットテストの共有プロジェクトは、Expressからも利用できます。これ以降はExpressに戻ります。
次期Visual Studioである"14"のCTP(Community Technology Previews)3が、8月18日にリリースされました。これには、Shared Project Reference Managerと同等の機能が搭載されています。また、VBでも共有プロジェクトの作成が可能になっています(次の画像)。この機能がExpressにも提供されるかどうかはまだ分かりませんが、ぜひとも提供してほしいものです。