Visual Studio テスト エクスプローラーに関する FAQ

動的なテストの検出

テスト エクスプローラーが、動的に定義されたテストを検出しません (理論、カスタム アダプター、カスタム特性、#ifdefs など)。これらのテストを検出するにはどうすればよいですか?

プロジェクトをビルドし、アセンブリベースの検出を実行します。

リアルタイムのテスト検出は、ソース ベースのテストの検出です。 理論、カスタム アダプター、カスタム特性、#ifdef ステートメントなどは実行時に定義されるため、これらを使うテストは検出できません。 これらのテストを正確に検出するには、ビルドが必要です。 Visual Studio 2017 バージョン 15.6 以降では、アセンブリベースの検出 (従来の検出プログラム) はビルドの後にのみ実行されます。 この設定は、リアルタイムのテスト検出は、ユーザーが編集中にできるだけ多くのテストを検出し、アセンブリベースの検出では、ビルド後に動的に定義されたテストを表示できるようにすることを意味します。 リアルタイムのテスト検出は、応答性を高めながら、ビルド後に完全かつ正確な結果を得ることができます。

テスト エクスプローラーの '+' (プラス) 記号

テスト エクスプローラーの最初の行に表示される '+' (プラス) 記号は何を意味しているのですか?

'+' (プラス) 記号は、アセンブリベースの検出を実行した後、さらに多くのテストを検出できる可能性があることを示します。 この記号は、プロジェクト内で動的に定義されているテストが検出されると表示されます。

Plus symbol summary line

リアルタイムのテスト検出

プロジェクトをビルドしなくても、入力中にテストがテスト エクスプローラーに表示されるようになりました。 変更箇所

この機能は、リアルタイムのテスト検出と呼ばれます。 これは Roslyn アナライザーを使用してテストを検出し、リアルタイムでテスト エクスプローラーに表示します。プロジェクトをビルドする必要はありません。 理論やカスタム特性など、動的に定義されるテストのテスト検出動作の詳細は、「動的なテストの検出」を参照してください。

リアルタイムのテスト検出の互換性

リアルタイムのテスト検出では、どの言語およびテスト フレームワークを使用できますか?

リアルタイムのテスト検出は、Roslyn コンパイラを使用してビルドされているため、マネージド言語 (C# および Visual Basic) に対してのみ機能します。 今のところ、リアルタイムのテスト検出は xUnit、NUnit、MSTest のフレームワークに対してのみ機能します。

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

どうすればテスト エクスプローラーのログを有効にできますか?

[ツール]>[オプション]>[テスト] の順に移動し、そこで [ログ] セクションを見つけます。

UWP のテストの検出

アプリを配置するまで UWP プロジェクトのテストが検出されないのはなぜですか?

アプリが配置されると、UWP テストは異なるランタイムを対象にします。 つまり、UWP プロジェクトで正確にテストを検出するには、プロジェクトをビルドするだけでなく、配置することも必要です。

テスト エクスプローラーの並べ替え

階層ビューでテスト結果を並べ替えるにはどうすればよいですか?

階層ビューでは、結果順ではなくアルファベット順にテストが並べ替えられます。 前のグループ化設定では、テスト結果を結果順に並べ替えてからアルファベット順に並べ替えます。 テスト エクスプローラーで列ヘッダーを右クリックして、[状態] 列を有効にし、[状態] 列ヘッダーをクリックしてその列に並べ替えを適用することで、結果によって並べ替えを引き続き有効にすることができます。 この GitHub の問題で設計に関するフィードバックを提供できます。

テスト エクスプローラーの階層ビュー

階層ビューでは、親ノード グループの隣に [成功]、[失敗]、[スキップされた]、[実行しない] アイコンがあります。 これらのアイコンの意味を教えてください。

プロジェクト、名前空間、およびクラス グループの横にあるアイコンは、そのグループ内のテストの状態を示します。 次のテーブルを参照してください。

Test Explorer Hierarchy Icons

ファイル パスによる検索

テスト エクスプローラーの検索ボックスの "ファイル パス" フィルターはもう存在しません。

テスト エクスプローラーの検索ボックスのファイル パス フィルターは、Visual Studio 2017 バージョン 15.7 で削除されました。 この機能は使用頻度が低く、この機能を除外することで、テスト エクスプローラーはテスト メソッドを高速で取得できます。 この変更によって開発フローが中断される場合は、開発者コミュニティでフィードバックを送信してその旨をお知らせください。

ドキュメントに記載されていないインターフェイスを削除する

テストに関連する一部の API は、Visual Studio 2019 には存在していません。 変更箇所

Visual Studio 2019 では、前にパブリックとしてマークされていたが、ドキュメントに正式に記載されたことがないいくつかのテスト ウィンドウ API が削除されます。 これらは、拡張機能の管理者に対して早期に警告を発するために、Visual Studio 2017 で "非推奨" としてマークされていました。 弊社の知る限りでは、これらの API を検出して依存関係を築いている拡張機能は、ごくわずかです。 これらのメソッドには、IGroupByProviderIGroupByProvider<T>KeyComparerISearchFilterISearchFilterTokenISearchToken、および SearchFilterTokenType が含まれます。 この変更が拡張機能に影響を与える場合は、開発者コミュニティでバグを入力して、その旨をお知らせください。

テスト アダプターの NuGet 参照

Visual Studio 2017 バージョン 15.8 で、テストは検出されますが、実行されません。

すべてのテスト プロジェクトで、各 .csproj ファイルに .NET テスト アダプターの NuGet 参照を含める必要があります。 含めない場合は、ビルド後にテスト アダプター拡張機能の検出が開始されるとき、またはユーザーが選択したテストを実行しようとするときに、次のテスト出力がプロジェクトに表示されます。

テスト プロジェクト {} は、.NET NuGet アダプターを参照しません。 このプロジェクトでは、テスト検出または実行が動作しないことがあります。 ソリューションの各 .NET テスト プロジェクトで NuGet テスト アダプターを参照することをお勧めします。

テスト アダプター拡張機能を使用する代わりに、プロジェクトではテスト アダプターの NuGet パッケージを使用する必要があります。 この要件により、パフォーマンスが大幅に向上し、継続的インテグレーションでの問題が減少します。 .NET テスト アダプター拡張機能の非推奨について詳しくは、リリース ノートをご覧ください。

UWP TestContainer が見つかりませんでした

UWP テストが Visual Studio 2017 バージョン 15.7 以降で実行されなくなりました。

最近の UWP テスト プロジェクトでは、テスト アプリを識別するためのパフォーマンスを向上させるため、テスト プラットフォームのビルド プロパティを指定します。 Visual Studio バージョン 15.7 より前に初期化された UWP テスト プロジェクトがある場合は、[出力]>[テスト] でこのエラーが表示される場合があります。

System.AggregateException: 1 つまたは複数のエラーが発生しました。 ---> System.InvalidOperationException: 次の TestContainer が {} Microsoft.VisualStudio.TestWindow.Controller.TestContainerProvider <GetTestContainerAsync>d__61.MoveNext() で見つかりませんでした

このエラーを修復するには:

  • 次のコードを使用して、テスト プロジェクトのビルド プロパティを更新します。
<UnitTestPlatformVersion Condition="'$(UnitTestPlatformVersion)' == ''">$(VisualStudioVersion)</UnitTestPlatformVersion>
  • 次のコードを使用して、TestPlatform SDK バージョンを更新します。
<SDKReference Include="TestPlatform.Universal, Version=$(UnitTestPlatformVersion)" />

プレビュー機能の使用

Visual Studio 2019 では、[ツール] > [オプション] > [環境] > [プレビュー機能] でプレビュー機能を選択できます。