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

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

テスト エクスプローラーは、ソリューション内の複数のテスト プロジェクト、および運用コード プロジェクトに含まれるテスト クラスからテストを実行できます。 テスト プロジェクトは別の単体テスト フレームワークを使用できます。 テスト対象のコードを .NET 用に記述する場合、対象コードの言語にかかわらず、.NET も対象とする言語でテスト プロジェクトを記述できます。 ネイティブ C/C++ コード プロジェクトは、C++ の単体テスト フレームワークを使用してテストする必要があります。

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

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

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

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

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

Test Explorer

Test Explorer

テストを実行、書き込み、再実行すると、テスト エクスプローラーにはプロジェクト名前空間クラスの既定のグループ化の結果が表示されます。 テスト エクスプローラーでテストをグループ化する方法を変更できます。

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

Run tests from the Test Explorer toolbar

Run tests from the Test Explorer toolbar

テストの実行

ソリューション内のすべてのテスト、グループ内のすべてのテスト、または選択した一連のテストを実行できます。 次のいずれかの操作を行います。

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

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

  • 実行する個々のテストを選び、選んだテストの右クリック メニューを開いてから、[選択したテストの実行] を選びます (または Ctrl + RT キーを押します)。

  • 個々のテストに実行順序を定める依存関係がない場合、ツール バーの設定メニューで並列テストの実行を有効にします。 これにより、すべてのテスト実行にかかる時間を著しく短縮できます。

各ビルドの後にテストを実行する

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

テスト結果を表示する

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

テストの詳細を表示する

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

Test execution details

Test execution details

テストの詳細ペインに次の情報が表示されます。

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

  • テストの状態。

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

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

  • テストの単体テスト フレームワークによって返されたメッセージ。

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

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

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

テスト リストをグループ化およびフィルター処理する

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

テストの一覧のテストをグループ化する

テスト エクスプローラーを使用すると、テストを階層にグループ化できます。 既定の階層グループは、 [プロジェクト][名前空間][クラス] です。 テストの編成方法を変更するには、[グループ化] ボタン Test Explorer group button を選択し、新しいグループ化の条件を選択します。

Group tests by category in Test Explorer

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

Screenshot of the Visual Studio Test Explorer showing a test hierarchy in one pane and the Group By menu in the other with the Class and State options checked.

テスト エクスプローラーを使用すると、テストを階層にグループ化できます。 既定の階層グループは、 [プロジェクト][名前空間][クラス] です。 テストの編成方法を変更するには、[グループ化] ボタン Test Explorer group button を選択し、新しいグループ化の条件を選択します。

Group tests by category in Test Explorer

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

Screenshot of the Visual Studio Test Explorer showing a test hierarchy in one pane and the Group By menu in the other with the Class and State options checked.

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

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

Traits

通常、特徴はカテゴリ名/値のペアですが、1 つのカテゴリにすることもできます。 特徴は、単体テスト フレームワークによってテスト メソッドとして識別されるメソッドに割り当てることができます。 単体テスト フレームワークは、特徴のカテゴリを定義できます。 特徴のカテゴリに値を追加して、独自のカテゴリ名/値のペアを定義できます。 特徴のカテゴリと値を指定する構文は、単体テスト フレームワークによって定義されます。

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

マネージド アプリケーション用の Microsoft 単体テスト フレームワークで、TestPropertyAttribute 属性の特徴の名前と値のペアを定義します。 テスト フレームワークには、次の定義済みの特徴も含まれています。

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

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

C++ 用の Microsoft 単体テスト フレームワークの使用方法」をご覧ください。

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

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

プレイリストを作成するには、テスト エクスプローラーで 1 つ以上のテストを選択します。 右クリック メニューで、 [プレイリストに追加]>[新しいプレイリスト] を選択します。

Create a playlist

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

Playlist opens in separate test explorer tab

プレイリストを作成するには、テスト エクスプローラーで 1 つ以上のテストを選択します。 右クリックし、 [プレイリストに追加]>[新しいプレイリスト] を選択します。

プレイリストを開くには、Visual Studio ツール バーのプレイリスト アイコンを選択し、メニューから以前に保存したプレイリスト ファイルを選択します。

プレイリストを編集するには、任意のテストを右クリックし、メニュー オプションを使用してプレイリストに対する追加または削除を行うことができます。

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

Edit Playlist button

また、階層内の親グループのボックスをオンまたはオフにすることもできます。 この操作により、そのグループ内のテストに基づいてプレイリストが常に更新される動的プレイリストが作成されます。 たとえば、クラスの横にチェック マークを付けると、そのクラスから追加されたテストはすべてこのプレイリストの一部になります。 そのクラスからテストを削除すると、プレイリストから削除されます。 ルールの詳細を確認するには、ツールバーの [保存] ボタンをクリックしてプレイリストを保存し、ディスク上に作成された .playlist ファイルを開きます。 このファイルには、すべてのルールと、プレイリストを構成する個々のテストが一覧表示されます。

Playlist xml file

特徴のプレイリストを作成する場合は、次の形式の 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 つ以上のテストを選択します。 右クリック メニューで、 [プレイリストに追加]>[新しいプレイリスト] を選択します。

Create a playlist

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

Playlist opens in separate test explorer tab

プレイリストを作成するには、テスト エクスプローラーで 1 つ以上のテストを選択します。 右クリックし、 [プレイリストに追加]>[新しいプレイリスト] を選択します。

プレイリストを開くには、Visual Studio ツール バーのプレイリスト アイコンを選択し、メニューから以前に保存したプレイリスト ファイルを選択します。

プレイリストを編集するには、任意のテストを右クリックし、メニュー オプションを使用してプレイリストに対する追加または削除を行うことができます。

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

Edit Playlist button

また、階層内の親グループのボックスをオンまたはオフにすることもできます。 この操作により、そのグループ内のテストに基づいてプレイリストが常に更新される動的プレイリストが作成されます。 たとえば、クラスの横にチェック マークを付けると、そのクラスから追加されたテストはすべてこのプレイリストの一部になります。 そのクラスからテストを削除すると、プレイリストから削除されます。 ルールの詳細を確認するには、ツールバーの [保存] ボタンをクリックしてプレイリストを保存し、ディスク上に作成された .playlist ファイルを開きます。 このファイルには、すべてのルールと、プレイリストを構成する個々のテストが一覧表示されます。

Playlist xml file

特徴のプレイリストを作成する場合は、次の形式の 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>

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

グループは、テスト エクスプローラーの列として、特徴、スタックトレース、エラー メッセージ、完全修飾名と共に使用することもできます。 既定では、ほとんどの列が表示されないため、表示する列とその表示順序をカスタマイズできます。

Screenshot of the Visual Studio Test Explorer showing a menu with Columns selected and a sub-menu with Duration, Traits, and Error Message selected.

テスト列のフィルター処理、並べ替え、再配置

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

  • 特定の特徴にフィルターを適用するには、特徴列の上部にあるフィルター アイコンをクリックします。

    Column filter

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

  • 列を並べ替えるには、列ヘッダーをクリックします。 すべての列を並べ替えることはできません。 また、Shift キーを押しながら、さらに列ヘッダーをクリックすると、2 つ目の列で並べ替えることもできます。

    Column sort

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

グループは、テスト エクスプローラーの列として、特徴、スタックトレース、エラー メッセージ、完全修飾名と共に使用することもできます。 既定では、ほとんどの列が表示されないため、表示する列とその表示順序をカスタマイズできます。

Screenshot of the Visual Studio Test Explorer showing a menu with Columns selected and a sub-menu with Duration, Traits, and Error Message selected.

テスト列のフィルター処理、並べ替え、再配置

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

  • 特定の特徴にフィルターを適用するには、特徴列の上部にあるフィルター アイコンをクリックします。

    Column filter

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

  • 列を並べ替えるには、列ヘッダーをクリックします。 すべての列を並べ替えることはできません。 また、Shift キーを押しながら、さらに列ヘッダーをクリックすると、2 つ目の列で並べ替えることもできます。

    Column sort

テスト リストを検索およびフィルター処理する

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

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

異なる条件でフィルター処理するには

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

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

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

Filter tests in Test Explorer

Filter tests in Test Explorer

Note

検索では大文字と小文字を区別せず、指定された文字列が条件の値の一部と一致するかどうかを照合します。

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

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

FilterName:"Criteria" -FilterName:"SubsetCriteria"

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

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

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

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

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

[コード カバレッジの結果] ウィンドウに、行、関数、クラス、名前空間、およびモジュールで実行された製品コードのブロックのパーセンテージが表示されます。

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

テスト ショートカット

テストはテスト エクスプローラーから実行できます。テストのコード エディター内で右クリックし、 [テストの実行] を選択するか、Visual Studio の既定のテスト エクスプローラー ショートカットを使用します。 ショートカットの一部はコンテキストベースです。 つまり、コード エディター内のカーソルの位置に基づいて、テストが実行、デバッグ、またはプロファイルされます。 カーソルがテスト メソッド内にある場合、そのテスト メソッドが実行されます。 カーソルがクラス レベルにある場合、そのクラスのすべてのテストが実行されます。 名前空間レベルの場合も同じことが適用されます。

頻繁に使用されるコマンド ショートカット キー
TestExplorer.DebugAllTestsInContext Ctrl+RCtrl+T
TestExplorer.RunAllTestsInContext Ctrl+RT
TestExplorer.RunAllTests Ctrl+RA
TestExplorer.RepeatLastRun Ctrl+RL

注意

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

オーディオ キューのテスト

テスト エクスプローラーを使用すると、テストの実行が完了したときに音を鳴らすことができます。 サウンドには 2 種類あり、1 つは、テストの実行が成功し、すべてのテストに合格したことを示し、もう 1 つは、テストが完了し、少なくとも 1 つのテストに失敗したことを示します。 これらのサウンドは、Windows 11 の既定の [サウンド] ダイアログで設定できます。 この機能は、Visual Studio 2019 Update 16.9 Preview 3 以降で使用できます。

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