この回答を Community Wiki として追加しているので、他の人が変更して最新の状態に保つことができます。
単体テスト
目的: エミュレーターを必要とせずに、IDE と継続的インテグレーション サーバーの両方から分離 (電話機能なし) で高速に実行されるテストを頻繁に実行する (例: TDD ビュー モデル)
多くのプレゼンテーションで推奨されている方法は、.NET 4 プロジェクトでソース ファイルを参照し、それらに対してテストを実行することです (アセンブリに相当するデスクトップを参照します)。コードでデスクトップ BCLとは異なる API を使用しておらず、参照プロジェクトを最新の状態に保つことができる (新しいファイルは自動的に追加されない) 場合は、それで十分です。
それ以外の場合は、次の手順に従って、デスクトップ CLR で WP7 アセンブリを参照するコードを実行できます。
- テスト Silverlight 4 クラス ライブラリ (Silverlight for Windows Phoneプロジェクトではない) をソリューションに追加します。
- クラス ライブラリで、mscorelib (基本的には System.* と Microsoft.*) を除く
Copy Local
すべてのフレームワーク参照を次のように設定します。true
- このテスト ライブラリからの参照をNUnit -Silverlight プロジェクト
NUnit.Silverlight.Framework.dll
との間で追加しますNUnit.Silverlight.Compatibility.dll
- バージョンの警告を無視して、テスト ライブラリからメインの Windows Phone プロジェクトへの参照を追加します。
- ReSharper (テスト済み) または TestDriven.NET を使用して、IDE からテストを実行します。
- 最新の NUnit リリースの標準 .NET 2.0 を使用してコマンド ラインからテストを実行
nunit-console.exe
し、./framework=v4.0
(WP7 は SL3 を使用するため、上記の回避策の多くが必要です。Mango が SL4 ランタイムでリリースされると、よりクリーンなセットアップになるはずです)
統合テスト
目的: コードの外部のリソース (電話機能や Web サービスなど) とやり取りする長時間のテストをエミュレーターで、オンデマンドと CI サーバーの両方で実行すること
UPDATEユニット テスト Windows Phone 8 アプリケーションは、Visual Studio 2012 Update 2 で正式にサポートされます。これには、VS 統合とコマンド ライン サポートが含まれます。これらのテストはエミュレーターで実行されるため、統合テストの下に含めました。
これは現在、Silverlight テスト フレームワークの WP7 ポートではサポートされていません (ブログからのダウンロードとしてのみ出荷されます)。
それまでの間、エミュレーターを起動し、結果を XML ファイルに照合する MSBuild タスクを追加するcodeplex プロジェクトを作成しました。最も簡単なインストール方法は、wp7-ci
NuGet パッケージを追加することです。
注: Windows Server に WP7 SDK をインストールするには、インストーラーの構成を変更する必要があり、サポートされていませんが、うまく機能します。
受け入れ/システムテスト
目的: オンデマンドまたは CI サーバーの両方で、エミュレーター上の電話の UI とやり取りするエンドツーエンドの自動テストを実行すること
Expensify の (SEO にちなんで名付けられた) Windows Phone Test Frameworkは、SpecFlow を使用したホスト PC からの UI 自動化テストの作成をサポートしています。