.NETでは、テスト フレームワークとテスト プラットフォームは、テストを検出して実行するために連携するさまざまなコンポーネントです。
- テスト フレームワークでは、MSTest、NUnit、xUnit.net、TUnit など、書き込むテスト モデルを定義します。
- テスト プラットフォームはテストを実行し、IDE と CLI と統合し、共有の拡張ポイントを提供します。
次の 2 つのテスト プラットフォームから選択できます。
- VSTest
- Microsoft.Testing.Platform (MTP)
ヒント
最も簡単なセットアップでは、リポジトリ用に 1 つのプラットフォームを選択し、そのプラットフォームに対してテスト プロジェクト、CI、およびツールを一貫して構成します。 VSTest ベースと Microsoft.Testing.Platform ベースの.NETテスト プロジェクトを同じソリューションに混在させないでください。また、そのシナリオはサポートされていないため、構成を実行しないでください。 VSTest に依存する.NET以外のテスト (C++ テストや JavaScript テストなど) も実行する場合は、MTP ベースの.NET テストとは別の構成でこれらのテストを実行します。
プラットフォームを選択する方法
次のシナリオを使用して、すばやく選択します。
| 利用シーン | 選択 | なぜでしょうか |
|---|---|---|
| ネイティブ AOT またはトリミング テスト実行シナリオが必要です。 | Microsoft.Testing.Platform | MTP ではこれらの最新のデプロイ シナリオがサポートされますが、VSTest ではサポートされません。 |
| パッケージ化された WinUI または UWP テスト プロジェクトをビルドしています。 | VSTest | 現在、これらのプロジェクトの種類は MTP ではサポートされていません。 |
| .NETテストと.NET以外のテスト アダプター (JavaScript アダプターや C++ アダプターなど) を混在させる必要があります。 | VSTest | VSTest では言語が混在するアダプター シナリオがサポートされますが、MTP は.NET固有です。 |
| テスト プロジェクトを通常の実行可能ファイル (、直接実行可能ファイルの実行、 、スタートアップ プロジェクトの F5 フロー) と同様に動作させる必要があります。 | Microsoft.Testing.Platform | MTP は実行可能ファイル優先であるため、テスト アプリはローカル ワークフローと CI ワークフローの標準.NET アプリと同様に実行されます。 |
| 既存のツールにおける、長期間にわたって確立された統合に依存します。 | VSTest | VSTest には、既存の製品、タスク、パイプライン全体で最も長い互換性の追跡レコードがあります。 MTP のサポートはエコシステムで拡大していますが、一部の統合は VSTest より遅れる可能性があります。 |
| 厳密な既定値と明示的な動作を使用することをお勧めします。 | Microsoft.Testing.Platform | MTP は、軽量のオプトイン拡張機能モデルとビルド時の登録を使用して確定的な実行を優先します。 たとえば、テストが実行されない場合に失敗し、環境に依存する変動を減らし、環境ごとに個々の拡張機能を無効にすることができます。 |
| より柔軟で幅広な下位互換性を持つデフォルト設定を好みます。 | VSTest | どちらのプラットフォームも下位互換性を考慮しています。 VSTest では、多様な既存のツールチェーンの互換性指向の既定値に優先順位を付けますが、MTP は独自の拡張モデル内で下位互換性を提供します。 |
| 現在のワークフローの VSTest 固有の問題または動作によってブロックされます。 | Microsoft.Testing.Platform | 多くのシナリオでは、ランタイム モデルと拡張アーキテクチャの違いにより、MTP に移動しても同じワークフローは影響を受けません。 |
特定のユース ケースが一覧にない場合は、両方のプラットフォームが有効な選択肢です。
統合とツールのサポート
| 統合領域 | VSTest | Microsoft.Testing.Platform |
|---|---|---|
| IDE 統合 | VSTest プロトコルとアダプターに依存するVisual Studioやその他のツール間の成熟した統合。 | Visual Studio および Visual Studio Code のシナリオでサポートされており、エコシステムの一部で統合作業が継続的に進行中です。 |
| CI と外部ツール | 長い間確立された Microsoft および Microsoft 以外のツールとタスク全体で広範なサポート。 Azure DevOpsでは、VSTest タスク (VSTest@3、vstest.console) または.NET タスク (DotNetCoreCLI@2、dotnet test) のいずれかを使用できます。 |
CI および最新の.NETワークフローで動作しますが、一部のサードパーティ統合は VSTest より遅れる可能性があります。 Azure DevOpsで、.NET タスク (DotNetCoreCLI@2、dotnet test) を使用します。 |
| 動作 | 既定の VSTest モード。 VSTest の引数と動作が適用されます。 | ネイティブ MTP モードは、.NET 10 SDK 以降で使用できます。 |
モードと引数の詳細については、「を使用したテスト」を参照してください。
テスト フレームワークから開始する
VSTest を選択した場合
- MSTest: MSTest を使用してテストを実行する
- NUnit: NUnit と Microsoft.Testing.Platform
- xUnit.net: xUnit.net の概要
- TUnit: VSTest ではサポートされていません。 Microsoft.Testing.Platform を使用します。
Microsoft.Testing.Platform を選択した場合
- MSTest: MSTest を使用してテストを実行する
- NUnit: NUnit での Microsoft.Testing.Platform のサポート (NUnit ランナー)
- xUnit.net: Microsoft Testing Platform (xUnit.net v3)
- TUnit: TUnit のドキュメント
次のステップ
- MTP の概念について: Microsoft.Testing.Platform の概要
- VSTest オプションについて: VSTest オプション
- VSTest からの移行: VSTest から Microsoft.Testing.Platform に移行する
- 機能の追加: Microsoft.Testing.Platform の機能
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET