2.ユニバーサルプロジェクトにユニットテストのプロジェクトを追加する
それでは、ユニットテストの対象とするユニバーサルプロジェクトとその他にいくつかのプロジェクトを作成し、それからユニットテストのプロジェクトも作って簡単なユニットテストを書いてみましょう。
ユニバーサルプロジェクトを作る
Visual Studio 2013(Update 2以降)を起動し、新しいプロジェクトを作ります。その際に、ダイアログの左側で[テンプレート]-[Visual C#]-[ストア アプリ]-[ユニバーサル アプリ]を選び、中央で[空のアプリケーション]または[ハブ アプリケーション]を指定します。ユニットテストを試してみるだけなら[空のアプリケーション]でも問題ありません。
空のユニバーサルプロジェクトを作った場合には、生成されたソリューションは次の図のようになります。
ユニバーサルプロジェクトは、このように3つのプロジェクトからなりたっています。そして、Windows用のプロジェクトをビルドするときには、Windows用プロジェクトと共有プロジェクトのソースコードが「マージ」されます(注1)。Phone用のプロジェクトをビルドするときも同様です。共有プロジェクト自体を単独でビルドすることはできません。
正確には、ソースコードのファイルが単純に混ぜ合わされるだけではありません。リソースファイルではファイルの内容がマージされるなど、細かいところで複雑な処理が行われます。しかし通常は、両方のプロジェクトに含まれているファイルが単純にマージされると思っていてよいでしょう。なお、プロジェクト内のディレクトリ構造は維持されたままで、マージされます。
PCLとWinMDのプロジェクトを追加する
ユニバーサルプロジェクトで使えるクラスライブラリー(すなわち、Windowsストアアプリからも、Windows Phoneストアアプリからも利用できるクラスライブラリー)には、次の2種類があります。
- ポータブルクラスライブラリー(PCL)
- Windowsランタイムコンポーネント(WinMD)
主な違いは、WinMDでは公開できるインターフェースに制限があることです。その代わりに、WinMDはバックグラウンドタスクを実装したり、JavaScriptで記述したストアアプリからも呼び出したりできるというメリットがあります。
さきほど作成したユニバーサルプロジェクトのソリューションに、ユニバーサルプロジェクト用のPCLとWinMDのプロジェクトを追加します。また、ユニバーサルプロジェクトのWindows用プロジェクトとWindows Phone用プロジェクトから、追加したプロジェクトに参照設定をしておいてください。



