Microsoft.Testing.Platform と VSTest の比較

Microsoft.Testing.Platform は、コマンド ライン、継続的インテグレーション (CI) パイプライン、Visual Studio テスト エクスプローラー、および Visual Studio Code でテストを実行するための、軽量で移植可能な VSTest の代替ツールです。 この記事では、MSTest ランナーと 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.* 名前空間内の Microsoft.Testing.Platform NuGet パッケージとその他のライブラリに基づいています。 VSTest と同様に、 Microsoft.Testing.Platform はオープンソースであり、 microsoft/testfx GitHub リポジトリがあります。

通信プロトコル(プレビュー)

Note

Visual Studio テスト エクスプローラーは、17.10 以降の プレビュー バージョンで Microsoft.Testing.Platform プロトコルをサポートしています。 以前のバージョンの Visual Studio を使用してテストを実行またはデバッグする場合、テスト エクスプローラーでこれらのテストを実行するために、 vstest.console.exe と古いプロトコルが使用されます。

Microsoft.Testing.Platform での Visual Studio とテスト ランナー プロセスの間の通信には、JSON-RPC ベースのプロトコルが使用されます。 このプロトコルは、 MSTest GitHub リポジトリのドキュメントに記載されています。

VSTest では JSON ベースの通信プロトコルも使用されますが、それは JSON-RPC ベースではありません。

新しいプロトコルの無効化

テスト エクスプローラーで新しいプロトコルの使用を無効にするには、csproj を編集して TestingPlatformServer 機能を削除します。

<ItemGroup>
    <ProjectCapability Remove="TestingPlatformServer" />
</ItemGroup>

実行可能ファイル

VSTest には複数の実行可能ファイル (特に vstest.console.exetesthost.exedatacollector.exe) が付属しています。 一方、MSTest はテスト プロジェクトに直接埋め込まれ、他の実行可能ファイルは付属しません。 テスト プロジェクトをコンパイルすると作成される実行可能ファイルは、すべてのテスト ツールをホストし、テストの実行に必要なすべてのタスクを実行するために使われます。