次の方法で共有


テスト エクスプローラーを使用して単体テストを実行する

テスト エクスプローラーを使用して、Visual Studio またはサード パーティの単体テスト プロジェクトから単体テストを実行します。 テスト エクスプローラーでは、テストをカテゴリにグループ化し、テスト一覧をフィルター処理し、テストのプレイリストを作成、保存、実行できます。 また、テスト エクスプローラーを使用して単体テストをデバッグし、Visual Studio Enterprise でコード カバレッジを分析することもできます。

テスト エクスプローラーでは、ソリューション内の複数のテスト プロジェクトと、運用コード プロジェクトの一部であるテスト クラスからテストを実行できます。 テスト プロジェクトでは、さまざまな単体テスト フレームワークを使用できます。 テスト対象のコードが .NET 用に記述されている場合、ターゲット コードの言語に関係なく、.NET を対象とする任意の言語でテスト プロジェクトを記述できます。 C++ 単体テスト フレームワークを使用して、ネイティブの C および C++ コード プロジェクトをテストする必要があります。

テスト プロジェクトをビルドする

Visual Studio ソリューションでテスト プロジェクトをまだ設定していない場合は、最初にテスト プロジェクトを作成してビルドする必要があります。 次のリソースを使用します。

Visual Studio には、マネージド コードとネイティブ コードの両方の Microsoft 単体テスト フレームワークが含まれています。 ただし、テスト エクスプローラーでは、テスト エクスプローラー アダプターを実装した単体テスト フレームワークを実行することもできます。 サードパーティの単体テスト フレームワークのインストールの詳細については、「単体テスト フレームワークをインストールする」を参照してください。

テスト エクスプローラーでテストを実行する

テスト プロジェクトをビルドすると、テスト エクスプローラーにテストが表示されます。 テスト エクスプローラーが表示されない場合は、Visual Studio メニュー [テスト] を選択し、[テスト エクスプローラー] 選択します (または、Ctrl + E、T キーを押します)。

テスト エクスプローラーのテスト一覧を示すスクリーンショット。

テスト エクスプローラーのテスト一覧を示すスクリーンショット。

テストの実行、書き込み、再実行を行うと、テスト エクスプローラーによって、ProjectNamespace、および クラスの既定のグループ化で結果が表示されます。 テスト エクスプローラーでテストをグループする方法を変更できます。

テスト エクスプローラーのツール バーからテストの検索、整理、実行の作業の多くを行うことができます。

テスト エクスプローラーのツール バーからテストを実行するためのアイコンを示すスクリーンショット。

テスト エクスプローラー ツール バーからテストを実行するためのアイコンを示すスクリーンショット。

テストを実行する

テストを実行するには、次のいずれかのオプションを選択します。

  • ソリューション内のすべてのテストを実行するには、[すべて実行] アイコンを選択します (または、Ctrl + R、V キーを押します)。

  • 既定のグループ内のすべてのテストを実行するには、[の実行] アイコン 選択し、メニューでグループを選択します。

  • 個々のテストを実行するには、1 つ以上のテストを選択し、ウィンドウのどこかを右クリックし、[選択したテストの実行] 選択します (または、Ctrl + R、T キーを押します)。

    個々のテストに任意の順序で実行できない依存関係がない場合は、ツール バーの設定メニューで並列テストの実行を有効にします。 このアクションにより、すべてのテストを実行する時間を短縮できます。

手記

単体テストを実行するためのターゲット プラットフォーム (プロセス アーキテクチャ) を構成するには、「単体テストのプロセス アーキテクチャを構成する」を参照してください。

ビルドのたびにテストを実行する

各ローカル ビルドの後に単体テストを実行するには、[テスト エクスプローラー] ツール バーの設定アイコンを選択し、[ビルド後にテストを実行 を選択します。

テスト結果の表示

テストを実行し、作成し、再実行する際には、テスト エクスプローラーは、失敗したテスト成功したテストスキップされたテスト、および未実行のテストのグループに分けて結果を表示します。 テスト エクスプローラーの下部または横にある詳細ウィンドウに、テスト実行の概要が表示されます。

テストの詳細を表示する

個々のテストの詳細を表示するには、テストを選択します。

テスト実行の詳細のスクリーンショット。

テスト実行の詳細のスクリーンショット。

テストの詳細のウィンドウが表示されます。

  • テスト メソッドのソース ファイル名と行番号。

  • テストの状態。

  • テスト メソッドの実行にかかった経過時間。

テストが失敗した場合は、詳細ウィンドウにも次の情報が表示されます。

  • 単体テストフレームワークが返すテストのメッセージ。

  • テストが失敗した時点のスタック トレース。

テスト メソッドのソース コードを表示する

Visual Studio エディターでテスト メソッドのソース コードを表示するには、テストを右クリックし、テスト を開く (または F12 キーを選択) を選択します。

テスト リストをグループ化してフィルター処理する

テスト エクスプローラーでは、定義済みのカテゴリにテストをグループ化できます。 テスト エクスプローラーで実行されるほとんどの単体テスト フレームワークでは、独自のカテゴリとカテゴリと値のペアを定義してテストをグループ化できます。 文字列をテスト プロパティと照合して、テストの一覧をフィルター処理することもできます。

テスト一覧でのテストのグループ化

テスト エクスプローラーを使用すると、テストを階層にグループ化できます。 既定の階層グループは、プロジェクト名前空間、その後にクラス です。 テストの整理方法を変更するには、[グループ化] ボタン テスト エクスプローラー グループ ボタン を選択し、新しいグループ化基準を選択します。

テスト エクスプローラーのカテゴリ別にテストをグループ化するための選択を示すスクリーンショット。

優先順位で [グループ化] オプションを選択することで、階層の独自のレベルを定義 (たとえば、[状態][クラス] でグループ化) することができます。

テスト エクスプローラーのスクリーンショット。テスト階層が 1 つのペインに表示され、もう一方のペインの [グループ化] メニューが表示され、[クラス] オプションと [状態] オプションが選択されています。

テスト エクスプローラーを使用すると、テストを階層にグループ化できます。 既定の階層グループは プロジェクト名前空間、その後 クラスです。 テストの編成方法を変更するには、まず [グループ化] ボタン を選択し、次に [テスト エクスプローラーグループ] ボタン を選択します。そして、新しいグループ化基準を選択してください。

テスト エクスプローラーのカテゴリ別にテストをグループ化するための選択を示すスクリーンショット。

優先順位で [グループ化] オプションを選択することで、階層の独自のレベルを定義 (たとえば、[状態][クラス] でグループ化) することができます。

テスト エクスプローラーのスクリーンショット。1 つのペインにテスト階層が表示され、もう一方のペインの [グループ化] メニューが表示され、[クラス] オプションと [状態] オプションが選択されています。

テスト エクスプローラーのグループ

グループ 説明
期間 実行時間別にテストをグループ化する: 高速低速
状態 実行結果別にテストをグループ化します。失敗したテストスキップされたテスト成功したテスト実行しない
ターゲットフレームワーク プロジェクトの対象となるフレームワークによってテストをグループ化します。
名前空間 含まれている名前空間によってテストをグループ化します。
プロジェクト 含まれているプロジェクトごとにテストをグループ化します。
クラス 包含クラスによってテストをグループ化します。

特徴

特性は通常、カテゴリ名と値のペアですが、1 つのカテゴリにすることもできます。 特性は、単体テスト フレームワークがテスト メソッドとして識別するメソッドに割り当てることができます。

単体テスト フレームワークでは、特性カテゴリを定義できます。 特性カテゴリに値を追加して、独自のカテゴリ名と値のペアを定義できます。 単体テスト フレームワークでは、特性のカテゴリと値を指定する構文を定義します。

マネージド コード用の Microsoft 単体テスト フレームワークの特徴

Microsoft Unit Testing Framework for Managed Code では、TestPropertyAttribute 属性に特性の名前と値のペアを定義します。 テスト フレームワークには、次の定義済みの特性も含まれています。

習性 説明
OwnerAttribute Owner カテゴリは単体テスト フレームワークによって定義され、所有者の文字列値を指定する必要があります。
PriorityAttribute Priority カテゴリは単体テスト フレームワークによって定義され、優先順位の整数値を指定する必要があります。
TestCategoryAttribute TestCategory 属性を使用すると、単体テストのカテゴリを指定できます。
TestPropertyAttribute TestProperty 属性を使用すると、特性カテゴリと値のペアを定義できます。

C++ 用 Microsoft 単体テスト フレームワークの特徴

Visual Studio で C++ 用 Microsoft 単体テスト フレームワークを使用するに関するページを参照してください。

カスタムプレイリストを作成する

実行するテストまたはグループとして表示するテストの一覧を作成して保存できます。 プレイリストを選択すると、リスト内のテストが新しい [テスト エクスプローラー] タブに表示されます。複数のプレイリストにテストを追加できます。

プレイリストを作成するには:

  1. テスト エクスプローラーで 1 つ以上のテストを選択します。
  2. ウィンドウのどこかを右クリックし、[プレイリストに追加] ポイントし、[新しいプレイリスト] 選択します。

プレイリストを作成するための選択を示すスクリーンショット。

プレイリストが新しい [テスト エクスプローラー] タブで開きます。このプレイリストを一度使用して破棄することができます。 または、プレイリストウィンドウのツールバーの [ 保存]ボタンを選択し、プレイリストを保存する名前と場所を選択することもできます。

別の [テスト エクスプローラー] タブで開かれたプレイリストを示すスクリーンショット。

プレイリストを開くには:

  1. Visual Studio のツール バーで、プレイリスト アイコンを選択します。
  2. メニューで、以前に保存したプレイリスト ファイルを選択します。

プレイリストを編集するには、次のいずれかのオプションを使用します。

  • 任意のテストを右クリックし、メニュー コマンドを使用してプレイリストに追加または削除します。

  • ツールバーで、[プレイリスト の編集]ボタン 選択します。 テストの横に表示されるチェック ボックスには、プレイリストに含まれるテストと除外されるテストが表示されます。 必要に応じてグループを編集します。 この機能は、Visual Studio 2019 バージョン 16.7 で開始されました。

    ツールバーの [プレイリストの編集] ボタンを示すスクリーンショット。

階層内の親グループのボックスをオンまたはオフにすることもできます。 このアクションにより、そのグループ内のテストに基づいて常にプレイリストを更新する動的プレイリストが作成されます。

たとえば、クラスの横にあるチェック ボックスをオンにすると、そのクラスから追加されたすべてのテストがこのプレイリストの一部になります。 そのクラスからテストを削除すると、プレイリストから削除されます。

ルールの詳細については、ツールバーの [保存] ボタンを使用してプレイリストを保存し、ディスクに作成された .playlist XML ファイルを開きます。 このファイルには、プレイリストを構成するすべてのルールと個々のテストが一覧表示されます。

プレイリスト XML ファイルの内容を示すスクリーンショット。

特徴のプレイリストを作成する場合は、MSTest フレームワークに次の形式を使用します。

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Property Name="Trait" Value="SchemaUpdateBasic" />
  </Rule>
</Playlist>

xUnit フレームワークには、次の形式を使用します。 TestCategory 名と [Value] 値の間にスペースがあることを確認します。

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Rule Match="All">
      <Property Name="Solution" />
        <Rule Match="Any">
            <Property Name="Trait" Value="TestCategory [Value]" />
        </Rule>
    </Rule>
  </Rule>
</Playlist>

実行するテストまたはグループとして表示するテストの一覧を作成して保存できます。 プレイリストを選択すると、リスト内のテストが新しい [テスト エクスプローラー] タブに表示されます。複数のプレイリストにテストを追加できます。

プレイリストを作成するには:

  1. テスト エクスプローラーで 1 つ以上のテストを選択します。
  2. ウィンドウのどこかを右クリックし、[プレイリストに追加] ポイントし、[新しいプレイリスト] 選択します。

プレイリストを作成するための選択を示すスクリーンショット。

プレイリストが新しい [テスト エクスプローラー] タブで開きます。このプレイリストを一度使用して破棄することができます。 または、プレイリストウィンドウのツールバーの [ 保存]ボタンを選択し、プレイリストを保存する名前と場所を選択することもできます。

別の [テスト エクスプローラー] タブで開かれたプレイリストを示すスクリーンショット。

プレイリストを開くには:

  1. Visual Studio のツール バーで、プレイリスト アイコンを選択します。
  2. メニューで、以前に保存したプレイリスト ファイルを選択します。

プレイリストを編集するには、次のいずれかのオプションを使用します。

  • 任意のテストを右クリックし、メニュー コマンドを使用してプレイリストに追加または削除します。

  • ツールバーで、[プレイリスト の編集]ボタン 選択します。 テストの横に表示されるチェック ボックスには、プレイリストに含まれるテストと除外されるテストが表示されます。 必要に応じてグループを編集します。 この機能は、Visual Studio 2019 バージョン 16.7 で開始されました。

    ツールバーの [プレイリストの編集] ボタンを示すスクリーンショット。

階層内の親グループのボックスをオンまたはオフにすることもできます。 このアクションにより、そのグループ内のテストに基づいて常にプレイリストを更新する動的プレイリストが作成されます。

たとえば、クラスの横にあるチェック ボックスをオンにすると、そのクラスから追加されたすべてのテストがこのプレイリストの一部になります。 そのクラスからテストを削除すると、プレイリストから削除されます。

ルールの詳細については、ツールバーの [保存] ボタンを使用してプレイリストを保存し、ディスクに作成された .playlist XML ファイルを開きます。 このファイルには、プレイリストを構成するすべてのルールと個々のテストが一覧表示されます。

プレイリスト XML ファイルの内容を示すスクリーンショット。

特徴のプレイリストを作成する場合は、MSTest フレームワークに次の形式を使用します。

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Property Name="Trait" Value="SchemaUpdateBasic" />
  </Rule>
</Playlist>

xUnit フレームワークには、次の形式を使用します。 TestCategory 名と [Value] 値の間にスペースがあることを確認します。

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Rule Match="All">
      <Property Name="Solution" />
        <Rule Match="Any">
            <Property Name="Trait" Value="TestCategory [Value]" />
        </Rule>
    </Rule>
  </Rule>
</Playlist>

テスト エクスプローラーの列

グループ は、特性スタック トレースエラー メッセージ、および完全修飾名 と共に、テスト エクスプローラーの列としても使用できます。 ほとんどの列は既定では表示されません。 表示する列をカスタマイズできます。

列が選択されたメニューと、[期間]、[特性]、[エラー メッセージ] が選択されたサブメニューが表示されている Visual Studio テスト エクスプローラーのスクリーンショット。

列は、フィルター処理、並べ替え、ソートを行うことができます。

  • 特定の特性にフィルターを適用するには、[特性] 列の上部にあるフィルター アイコンを選択します。

    列フィルターのスクリーンショット。

  • 列の順序を変更するには、列ヘッダーを選択し、左または右にドラッグします。

  • 列を並べ替えるには、列ヘッダーを選択します。 すべての列を並べ替えることはできません。 Shift キーを押しながら追加の列ヘッダーを選択することで、セカンダリ列で並べ替えることもできます。

    列の並べ替えのスクリーンショット。

テスト エクスプローラーの列

グループ は、特性スタック トレースエラー メッセージ、および完全修飾名 と共に、テスト エクスプローラーの列としても使用できます。 ほとんどの列は既定では表示されません。 表示する列をカスタマイズできます。

列が選択されたメニューと、[期間]、[特性]、[エラー メッセージ] が選択されたサブメニューが表示されている Visual Studio テスト エクスプローラーのスクリーンショット。

次のように列のフィルター処理、順序の変更、並べ替えを行うことができます。

  • 特定の特性にフィルターを適用するには、[特性] 列の上部にあるフィルター アイコンを選択します。

    列フィルターのスクリーンショット。

  • 列の順序を変更するには、列ヘッダーを選択し、左または右にドラッグします。

  • 列を並べ替えるには、列ヘッダーを選択します。 すべての列の並べ替えができるとは限りません。 Shift キーを押しながら追加の列ヘッダーを選択することで、セカンダリ列で並べ替えることもできます。

    列の並べ替えのスクリーンショット。

テスト リストを検索してフィルター処理する

また、テスト エクスプローラーの検索フィルターを使用して、表示および実行するプロジェクトのテスト メソッドを制限することもできます。

テスト エクスプローラーの 検索ボックスに文字列を入力し、Enter キーを選択すると、完全修飾名に文字列が含まれるテストのみが表示されるようにテスト リストがフィルター処理されます。

別の条件でフィルター処理するには:

  1. 検索ボックスの右側にあるドロップダウン リストを開きます。

  2. 新しい条件を選択します。

  3. 引用符の間にフィルター値を入力します。 文字列の部分一致ではなく完全一致を検索する場合は、コロン (:) ではなく等号 (=) を使用します。

テスト エクスプローラーのフィルター テストのスクリーンショット。

テスト エクスプローラーのフィルター テストのスクリーンショット。

手記

検索では大文字と小文字が区別されず、指定した文字列が条件値の任意の部分と一致します。

修飾子 説明
状態 テスト エクスプローラーのカテゴリ名で一致を検索します。失敗したテストスキップされたテスト成功したテスト
特徴 特性カテゴリと一致する値の両方を検索します。 単体テスト フレームワークでは、特性のカテゴリと値を指定する構文を定義します。
完全修飾名 テスト名前空間、クラス、およびメソッドの完全修飾名を検索して、一致を検索します。
プロジェクト テスト プロジェクト名で一致を検索します。
ターゲット フレームワーク テスト フレームワークで一致を検索します。
名前空間 テスト名前空間で一致を検索します。
クラス テスト クラス名で一致を検索します。

フィルターの結果のサブセットを除外するには、次の構文を使用します。

FilterName:"Criteria" -FilterName:"SubsetCriteria"

たとえば、FullName:"MyClass" - FullName:"PerfTest" は、名前に "PerfTest" も含まれるテストを除き、名前に "MyClass" を含むすべてのテストを返します。

単体テストのコード カバレッジを分析する

Visual Studio Enterprise で使用できる Visual Studio Code カバレッジ ツールを使用して、単体テストで実際にテストする製品コードの量を確認できます。 選択したテストまたはソリューション内のすべてのテストでコード カバレッジを実行できます。

ソリューションでテスト メソッドのコード カバレッジを実行するには:

  • テスト エクスプローラー内を右クリックし、[選択されたテストのコード カバレッジの分析] を選択します。

コード カバレッジの結果 ウィンドウには、ライン、関数、クラス、名前空間、およびモジュールによって実行された製品コードのブロックの割合が表示されます。

詳細については、「コード カバレッジを使用して、テストされているコードの量を確認する」を参照してください。

テストショートカット

テスト エクスプローラーからテストを実行するには、次のいずれかを行います。

ショートカットの一部はコンテキストベースです。 コード エディター内のカーソルの位置に基づいて、テストが実行、デバッグ、またはプロファイリングされます。 カーソルがテスト メソッド内にある場合、そのテスト メソッドが実行されます。 カーソルがクラス レベルにある場合は、そのクラス内のすべてのテストが実行されます。 名前空間レベルでも同じ動作が当てはまります。

頻繁なコマンド キーボード ショートカット
TestExplorer.DebugAllTestsInContext Ctrl + R、Ctrl + T
TestExplorer.RunAllTestsInContext Ctrl + R、T
TestExplorer.RunAllTests Ctrl + R、A
TestExplorer.RepeatLastRun Ctrl + R、L

手記

テストは抽象クラスでのみ定義され、インスタンス化されないため、抽象クラスでテストを実行することはできません。 抽象クラスでテストを実行するには、抽象クラスから派生するクラスを作成します。

オーディオ キューを設定する

テスト エクスプローラーは、テストの実行が完了したときに、次のいずれかのサウンドを再生できます。

  • すべてのテストが合格した際にテストの成功を示す音
  • テストの実行が少なくとも 1 つの失敗したテストで終了したことを示すサウンド

これらのサウンドは、既定の Windows 11 サウンド ダイアログで設定できます。 この機能は、Visual Studio 2019 Update 16.9 Preview 3 以降で使用できます。

  1. 既定の Windows 11 サウンド ダイアログを開きます。
  2. サウンド タブに移動します。
  3. [Microsoft Visual Studio] カテゴリを見つけます。 テスト実行成功 のプリセットサウンド、または テスト実行失敗 のプリセットサウンドを選択するか、独自のオーディオファイルを参照します。

Windows 11 サウンド ダイアログのスクリーンショット。