この記事では、組み込み単体テスト プロジェクト テンプレートを使用して、Visual Studio で WinUI アプリの単体テストを作成する方法について説明します。
Windows App SDK アプリのテストの一般的な概要については、「Windows App SDK と WinUI 3 を使用してビルドされたテスト アプリ」を参照してください。
Note
ここで説明する単体テスト アプリは、WinUI アプリケーションのコンテキストで記述されています。 これは、Xaml ランタイムを必要とするコードを実行するすべてのテストに必要です。 このプロジェクトでは、Xaml UI スレッドを作成し、テストを実行します。
このチュートリアルでは、次の作業を行う方法について説明します。
- Visual Studio で、C# に対して、単体テストアプリ (デスクトップ の WinUI 3) を作成するか、C++ プロジェクトに対して、単体テストアプリ (WinUI 3) を作成します。
- Visual Studio Text Explorer を使用します。
- テスト用に Class Library (デスクトップの WinUI 3) プロジェクトを追加します。
- Visual Studio Test Explorer でテストを実行します。
前提条件
Visual Studio をインストールする必要があります。
Visual Studio をまだインストールしていない場合は、Visual Studio のダウンロード ページに移動し、無料試用版をインストールしてください。
テスト アプリ (デスクトップの WinUI 3) プロジェクトを作成するには?
まず、単体テストプロジェクトを作成します。 このプロジェクト タイプには、必要なテンプレート ファイルがすべて用意されています。
Visual Studio を開き、[スタート] ウィンドウで [新規プロジェクトを作成] を選択します。
[新規プロジェクトを作成] ウィンドウで、C#、Windows および WinUI でプロジェクトをフィルタ処理し、C++) に対して、デスクトップの単体テストアプリ (WinUI 3) テンプレート (または 単体テストアプリ (WinUI 3) を選択したら、[次へ] を選択します。
[オプション] [新規プロジェクトを構成] ウィンドウで、プロジェクトの [プロジェクト名]、[ソリューション名] ([同じディレクトリにソリューションとプロジェクトを配置する] チェックボックスをオフにします)、および [場所] を変更します。
[作成] を選択します
Test Explorer を使用してテストを実行するには
テスト プロジェクトを作成する際、テストは、単体テストの実行に使用される Test Explorer に表示されます。 また、テストをカテゴリにグループ化したり、テスト リストをフィルター処理したり、テストのプレイリストを作成、保存、実行したり、単体テストをデバッグしたり、(Visual Studio Enterprise で) コード カバレッジを分析したりすることもできます。
UnitTests.cs ファイルには、Test Explorer で使用される単体テストのソース コードが含まれています。 既定では、次のような基本的なサンプル テストが自動的に作成されます。
namespace WinUITest1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
Assert.AreEqual(0, 0);
}
// Use the UITestMethod attribute for tests that need to run on the UI thread.
[UITestMethod]
public void TestMethod2()
{
var grid = new Grid();
Assert.AreEqual(0, grid.MinWidth);
}
}
}
まだ行っていない場合は、ソリューションをビルドします。 これにより、Visual Studio で使用可能なすべてのテストを「検出」できるようになります。
テスト エクスプローラーを開きます。 表示されな場合は、[テスト] メニューで、[Test Explorer] を選択します (または Ctrl + E、T キーを押します)。
テストを表示します。 [Test Explorer] ウィンドウで、すべてのノードを展開します (この時点ではサンプル テストのみが存在します)。
テストを実行します。
- 個々のテスト ノードを右クリックし、[実行] を選択します。
- テストを選択し、[再生] ボタンを押すか、Ctrl + R、T キーを押します。
- [ビューですべてのテストを実行] ボタンを押すか、Ctrl Ctrl + R、V を押します。
結果を確認します。 テストが完了すると、[Test Explorer] ウィンドウに結果が表示されます。
単体テスト ソリューションに新規プロジェクトを追加します。 Solution Explorer で、ソリューションを右クリックして、[追加] -> [新規プロジェクト...] の順に選択します。
この例では、WinUI クラス ライブラリ プロジェクトを追加します。 [新規プロジェクト] ウィンドウで、C#/Windows/WinUI でフィルター処理し、[クラス ライブラリ (デスクトップの WinUI 3)] を選択します。
[次へ] を選択し、プロジェクトの名前を入力し (この例では「WinUIClassLibrary1」)、[作成] を押します。
新規 UserControl をプロジェクトに追加します。 Solution Explorer で、追加した WinUI クラス ライブラリ プロジェクトを右クリックし、コンテキスト メニューで、[追加] -> [新しい項目] の順に選択します。
[新しい項目の追加] ウィンドウで、インストールされている項目一覧で WinUI ノードを選択し、結果から [ユーザー コントロール (WinUI 3)] を選択します。 コントロールに「UserControl1」という名前を付けます。
UserControl1.xaml.cs コードビハインド ファイルを開きます。 この例では、単に整数を返す「GetSeven()」という新しいパブリック メソッドを追加します。
namespace WinUICLassLibrary1 { public sealed partial class UserControll : UserControl { public UserControl1() { this.InitializeComponent(); } public int GetSeven() { return 7; } } }
WinUI クラス ライブラリ プロジェクトを単体テスト プロジェクトの依存関係として設定して、WinUI クラス ライブラリ プロジェクトから型の使用を有効にします。 Solution Explorer のクラス ライブラリ プロジェクトで、[依存性] をクリックし、[プロジェクト リファレンスランスを追加] を選択します。
[プロジェクト] リストで、[WinUIClassLibrary1] 項目を選択します。
UnitTests.cs で新しいテスト メソッドを作成します。 このテスト ケースでは XAML UI Thread を実行する必要があるため、標準の [TestMethod] 属性の代わりに [UITestMethod] 属性でマークします。
[UITestMethod] public void TestUserControl1() { WinUIClassLibrary1.UserControl1 userControl1 = new WinUIClassLibrary1.UserControl1(); Assert.AreEqual(7, userControl1.GetSeven()); }
この新しいテスト メソッドは、単体テストの 1 つとして Test Explorer に表示されるようになりました。
テストを実行します。
- 新しいテスト・ノードを右クリックし、[実行] を選択します。
- 新規テストを選択し、[再生] ボタンを押すか、Ctrl + R、T キーを押します。
- [ビューですべてのテストを実行] ボタンを押すか、Ctrl Ctrl + R、V を押します。
その他のリソース
次のステップ
このチュートリアルでは、以下の内容を学習しました。
- Visual Studio で [テスト アプリ (デスクトップの WinUI 3)] プロジェクトを作成します。
- Visual Studio Text Explorer を使用します。
- テスト用に Class Library (デスクトップの WinUI 3) プロジェクトを追加します。
- Visual Studio Test Explorer でテストを実行します。
Visual Studio に含まれるテスト ツールのより包括的なカバレッジ:
Windows developer