次の方法で共有


Visual Studio での Windows UI ライブラリ (WinUI) アプリの単体テスト

この記事では、組み込み単体テスト プロジェクト テンプレートを使用して、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) プロジェクトを作成するには?

まず、単体テストプロジェクトを作成します。 このプロジェクト タイプには、必要なテンプレート ファイルがすべて用意されています。

  1. Visual Studio を開き、[スタート] ウィンドウで [新規プロジェクトを作成] を選択します。

    Visual Studio スタート ウィンドウのスクリーンショット。

  2. [新規プロジェクトを作成] ウィンドウで、C#Windows および WinUI でプロジェクトをフィルタ処理し、C++) に対して、デスクトップの単体テストアプリ (WinUI 3) テンプレート (または 単体テストアプリ (WinUI 3) を選択したら、[次へ] を選択します。

    Visual Studio の新規プロジェクトを作成ウィンドウのスクリーンショット。

  3. [オプション] [新規プロジェクトを構成] ウィンドウで、プロジェクトの [プロジェクト名][ソリューション名] ([同じディレクトリにソリューションとプロジェクトを配置する] チェックボックスをオフにします)、および [場所] を変更します。

  4. [作成] を選択します

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);
      }
   }
}
  1. まだ行っていない場合は、ソリューションをビルドします。 これにより、Visual Studio で使用可能なすべてのテストを「検出」できるようになります。

  2. テスト エクスプローラーを開きます。 表示されな場合は、[テスト] メニューで、[Test Explorer] を選択します (または Ctrl + E、T キーを押します)。

    Visual Studio の [テスト] メニューのスクリーンショット。

  3. テストを表示します。 [Test Explorer] ウィンドウで、すべてのノードを展開します (この時点ではサンプル テストのみが存在します)。

    既定のサンプル テストを示す Visual Studio の Test Explorer ウィンドウのスクリーンショット。

  4. テストを実行します。

    • 個々のテスト ノードを右クリックし、[実行] を選択します。
    • テストを選択し、[再生] ボタンを押すか、Ctrl + R、T キーを押します。
    • [ビューですべてのテストを実行] ボタンを押すか、Ctrl Ctrl + R、V を押します。

    Run コマンドが強調表示されているテスト コンテキスト メニューが示されている Visual Studio の Test Explorer ウィンドウのスクリーンショット。

  5. 結果を確認します。 テストが完了すると、[Test Explorer] ウィンドウに結果が表示されます。

    テスト実行結果が表示された Visual Studio の Test Explorer ウィンドウのスクリーンショット。

  6. 単体テスト ソリューションに新規プロジェクトを追加します。 Solution Explorer で、ソリューションを右クリックして、[追加] -> [新規プロジェクト...] の順に選択します。

    Visual Studio で追加、新規プロジェクトが強調表示されたソリューション コンテキスト メニューのスクリーンショット。

  7. この例では、WinUI クラス ライブラリ プロジェクトを追加します。 [新規プロジェクト] ウィンドウで、C#/Windows/WinUI でフィルター処理し、[クラス ライブラリ (デスクトップの WinUI 3)] を選択します。

    Visual Studio でクラス ライブラリ (デスクトップの WinUI 3) が強調表示されている新規プロジェクト ウィンドウのスクリーンショット。

  8. [次へ] を選択し、プロジェクトの名前を入力し (この例では「WinUIClassLibrary1」)、[作成] を押します。

    Solution Explorer で強調表示されている新しい [クラス ライブラリ (デスクトップの WinUI 3)] プロジェクトろコード エディターで Class1.cs ファイルが開いているスクリーンショット。

  9. 新規 UserControl をプロジェクトに追加します。 Solution Explorer で、追加した WinUI クラス ライブラリ プロジェクトを右クリックし、コンテキスト メニューで、[追加] -> [新しい項目] の順に選択します。

    Visual Studio で追加、新しい項目が強調表示されたソリューション コンテキスト メニューのスクリーンショット。

  10. [新しい項目の追加] ウィンドウで、インストールされている項目一覧で WinUI ノードを選択し、結果から [ユーザー コントロール (WinUI 3)] を選択します。 コントロールに「UserControl1」という名前を付けます。

    Visual Studio で WinUI\/User Control (WinUI 3) が強調表示されている新しい項目の追加ウィンドウのスクリーンショット。

  11. UserControl1.xaml.cs コードビハインド ファイルを開きます。 この例では、単に整数を返す「GetSeven()」という新しいパブリック メソッドを追加します。

    namespace WinUICLassLibrary1
    {
      public sealed partial class UserControll : UserControl
      {
         public UserControl1()
         {
             this.InitializeComponent();
         }
    
         public int GetSeven()
         {
             return 7;
         }
      }
    }
    
  12. WinUI クラス ライブラリ プロジェクトを単体テスト プロジェクトの依存関係として設定して、WinUI クラス ライブラリ プロジェクトから型の使用を有効にします。 Solution Explorer のクラス ライブラリ プロジェクトで、[依存性] をクリックし、[プロジェクト リファレンスランスを追加] を選択します。

    Visual Studio でプロジェクト リファレンスを追加が、依存性コンテキスト メニューで強調表示されたスクリーンショット。

    [プロジェクト] リストで、[WinUIClassLibrary1] 項目を選択します。

    [参照マネージャー] ダイアログのスクリーンショット。'WinUIClassLibrary1' プロジェクトが選択されています。

  13. 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 に表示されるようになりました。

    新しい単体テストでの既定のサンプル テストが示された Visual Studio の Test Explorer ウィンドウのスクリーンショット。

  14. テストを実行します。

  • 新しいテスト・ノードを右クリックし、[実行] を選択します。
  • 新規テストを選択し、[再生] ボタンを押すか、Ctrl + R、T キーを押します。
  • [ビューですべてのテストを実行] ボタンを押すか、Ctrl Ctrl + R、V を押します。

既定のサンプル テストと新しい単体テストの完了したテスト実行が示されている Visual Studio の Test Explorer ウィンドウのスクリーンショット。

その他のリソース

単体テストの基本

次のステップ

このチュートリアルでは、以下の内容を学習しました。

  • Visual Studio で [テスト アプリ (デスクトップの WinUI 3)] プロジェクトを作成します。
  • Visual Studio Text Explorer を使用します。
  • テスト用に Class Library (デスクトップの WinUI 3) プロジェクトを追加します。
  • Visual Studio Test Explorer でテストを実行します。

Visual Studio に含まれるテスト ツールのより包括的なカバレッジ: