SHOEISHA iD

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

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

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

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

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

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

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

2.ユニバーサルプロジェクトにユニットテストのプロジェクトを追加する

 それでは、ユニットテストの対象とするユニバーサルプロジェクトとその他にいくつかのプロジェクトを作成し、それからユニットテストのプロジェクトも作って簡単なユニットテストを書いてみましょう。

ユニバーサルプロジェクトを作る

 Visual Studio 2013(Update 2以降)を起動し、新しいプロジェクトを作ります。その際に、ダイアログの左側で[テンプレート]-[Visual C#]-[ストア アプリ]-[ユニバーサル アプリ]を選び、中央で[空のアプリケーション]または[ハブ アプリケーション]を指定します。ユニットテストを試してみるだけなら[空のアプリケーション]でも問題ありません。

ユニバーサルプロジェクトを作る
ユニバーサルプロジェクトを作る

 空のユニバーサルプロジェクトを作った場合には、生成されたソリューションは次の図のようになります。

自動生成された空のユニバーサルプロジェクト
自動生成された空のユニバーサルプロジェクト

 ユニバーサルプロジェクトは、このように3つのプロジェクトからなりたっています。そして、Windows用のプロジェクトをビルドするときには、Windows用プロジェクトと共有プロジェクトのソースコードが「マージ」されます(注1)。Phone用のプロジェクトをビルドするときも同様です。共有プロジェクト自体を単独でビルドすることはできません。

注1 ユニバーサルプロジェクトのビルド時の挙動について

 正確には、ソースコードのファイルが単純に混ぜ合わされるだけではありません。リソースファイルではファイルの内容がマージされるなど、細かいところで複雑な処理が行われます。しかし通常は、両方のプロジェクトに含まれているファイルが単純にマージされると思っていてよいでしょう。なお、プロジェクト内のディレクトリ構造は維持されたままで、マージされます。

PCLとWinMDのプロジェクトを追加する

 ユニバーサルプロジェクトで使えるクラスライブラリー(すなわち、Windowsストアアプリからも、Windows Phoneストアアプリからも利用できるクラスライブラリー)には、次の2種類があります。

  • ポータブルクラスライブラリー(PCL)
  • Windowsランタイムコンポーネント(WinMD)

 主な違いは、WinMDでは公開できるインターフェースに制限があることです。その代わりに、WinMDはバックグラウンドタスクを実装したり、JavaScriptで記述したストアアプリからも呼び出したりできるというメリットがあります。

 さきほど作成したユニバーサルプロジェクトのソリューションに、ユニバーサルプロジェクト用のPCLとWinMDのプロジェクトを追加します。また、ユニバーサルプロジェクトのWindows用プロジェクトとWindows Phone用プロジェクトから、追加したプロジェクトに参照設定をしておいてください。

PCLのプロジェクトを追加する
PCLのプロジェクトを追加する
WinMDのプロジェクトを追加する
WinMDのプロジェクトを追加する

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

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

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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー