Microsoft.Testing.Platform は、コマンド ライン、継続的インテグレーション (CI) パイプライン、Visual Studio テスト エクスプローラー、および Visual Studio Code でテストを実行するための VSTest を するための軽量で移植可能な代替手段です。 この記事では、Microsoft.Testing.Platform と VSTest の主な違いについて説明します。
テスト実行の違い
テストはランナーによって異なる方法で実行されます。
VSTest テストを実行する
VSTest には、Visual Studio、.NET SDK、および Microsoft.TestPlatform NuGet パッケージのスタンドアロン ツールが付属しています。 VSTest では、ランナー実行可能ファイルを使用して、vstest.console.exeと呼ばれるテストを実行します。これは、直接または dotnet testを介して使用できます。
Microsoft.Testing.Platform テストを実行する
Microsoft.Testing.Platform はテスト プロジェクトに直接埋め込まれており、追加の実行可能ファイルは出荷されません。 プロジェクトの実行可能ファイルを実行すると、テストが実行されます。 Microsoft.Testing.Platform テストの実行の詳細については、「Microsoft.Testing.Platform の概要:テストの実行とデバッグ」を参照してください。
名前空間と NuGet パッケージ
Microsoft.Testing.Platform と VSTest について理解するには、それぞれで使用される名前空間と NuGet パッケージを理解すると便利です。
VSTest 名前空間
VSTest は、テスト プラットフォームとも呼ばれるテスト ツールのコレクションです。 VSTest ソース コードはオープンソースであり、microsoft/vstest GitHub リポジトリで使用できます。 このコードでは、Microsoft.TestPlatform.* 名前空間を使用します。
VSTest は拡張可能であり、一般的な型は Microsoft.TestPlatform.ObjectModel NuGet パッケージ 配置されます。
Microsoft.Testing.Platform 名前空間
Microsoft.Testing.Platform は、Microsoft.Testing.Platform NuGet パッケージと、Microsoft.Testing.* 名前空間内の他のライブラリに基づいています。 VSTest と同様に、Microsoft.Testing.Platform はオープンソースであり、GitHub リポジトリ microsoft/testfx を持っています。
通信プロトコル
手記
Visual Studio テスト エクスプローラーでは、17.12 以降の Microsoft.Testing.Platform プロトコルがサポートされています。 以前のバージョンの Visual Studio を使用してテストを実行またはデバッグする場合、テスト エクスプローラーでは、vstest.console.exe と古いプロトコルを使用してこれらのテストを実行します。
Microsoft.Testing.Platform では、JSON-RPC ベースのプロトコルを使用して、Visual Studio とテスト ランナー プロセスの間で通信します。 プロトコルについては、MSTest GitHub リポジトリに記載されています。
VSTest では JSON ベースの通信プロトコルも使用されますが、JSON-RPC ベースではありません。
新しいプロトコルの無効化
テスト エクスプローラーで新しいプロトコルの使用を無効にするには、プロジェクトを編集して次のプロパティを追加できます: <DisableTestingPlatformServerCapability>true</DisableTestingPlatformServerCapability>。
Visual Studio の [プレビュー機能] オプションに移動し、[テスト プラットフォーム サーバー モードを使用する] オプションの選択を解除することもできます。
実行可能ファイル
VSTest には、特に vstest.console.exe、testhost.exe、datacollector.exeなど、複数の実行可能ファイルが付属しています。 ただし、Microsoft.Testing.Platform はテスト プロジェクトに直接埋め込まれており、他の実行可能ファイルは出荷されません。 テスト プロジェクトがコンパイルする実行可能ファイルは、すべてのテスト ツールをホストし、テストの実行に必要なすべてのタスクを実行するために使用されます。
こちらも参照ください
.NET