Microsoft.Testing.Platform は、継続的インテグレーション (CI) パイプライン、CLI、Visual Studio テスト エクスプローラー、VS Code テスト エクスプローラーなど、すべてのコンテキストでテストを実行するための VSTest を する軽量で移植可能な代替手段です。 Microsoft.Testing.Platform はテスト プロジェクトに直接埋め込まれており、テストの実行に必要なvstest.console や dotnet test など、他のアプリの依存関係はありません。
ヒント
VSTest と Microsoft.Testing.Platform の選択に関するヘルプが必要な場合は、 テスト プラットフォームの概要から始めます。
この記事は、Microsoft.Testing.Platform の使用を既に決定しており、そのモデル、機能、運用動作を理解したい場合に使用します。
Microsoft.Testing.Platform はオープンソースです。
Microsoft.Testing.Platform のコードは、 microsoft/testfx GitHub リポジトリにあります。
ここから始める
次に必要なものに基づいて、次のパスを使用します。
- CLI、IDE、または CI からのテストの実行と デバッグ: テストの実行とデバッグ
- CLI でのプラットフォームの動作を理解する:
dotnet testを使用したテスト - プラットフォームと拡張機能の CLI スイッチを 1 か所で検索する: Microsoft.Testing.Platform CLI オプション リファレンス
- フレームワーク ランナーの構成: NUnit (NUnit ランナー) で MSTest または Microsoft.Testing.Platform サポートを使用してテストを実行する
- 既存の VSTest セットアップを移行する: VSTest から Microsoft.Testing.Platform に移行する
- 診断、カバレッジ、レポートの追加: Microsoft.Testing.Platform の機能
- 独自の拡張機能を構築する: Microsoft.Testing.Platform のアーキテクチャ、 拡張ポイント、 サービス
Microsoft.Testing.Platform の柱
この新しいテスト プラットフォームは、.NET Developer Experience Testing チームの経験に基づいて構築されており、2016 年の .NET Core のリリース以降に発生した課題に対処することを目的としています。 .NET Framework と .NET Core/.NET の間には高いレベルの互換性がありますが、プラグイン システムや .NET コンパイルの新しい可能なフォーム ファクターなどの一部の主要な機能により、現在の VSTest プラットフォーム アーキテクチャで新しいランタイム機能を進化または完全にサポートすることが複雑になりました。
新しいテスト プラットフォームの進化の主な推進要因については、以下で詳しく説明します。
決定主義: 異なるコンテキスト (ローカル、CI) で同じテストを実行すると、同じ結果が生成されることを確認します。 新しいランタイムは、リフレクションやその他の動的な .NET ランタイム機能に依存してテストの実行を調整しません。
ランタイムの透過性: テスト ランタイムはテスト フレームワーク コードに干渉せず、
AppDomainやAssemblyLoadContextなどの分離されたコンテキストを作成せず、リフレクションまたはカスタム アセンブリ リゾルバーを使用しません。拡張機能のコンパイル時の登録: テスト フレームワークやプロセス外の拡張機能などの拡張機能は、確定性を確保し、不整合の検出を容易にするためにコンパイル時に登録されます。
依存関係がゼロ: プラットフォームのコアは、サポートされているランタイム以外の依存関係を持たない単一の .NET アセンブリである
Microsoft.Testing.Platform.dllです。Hostable: テスト ランタイムは、任意の .NET アプリケーションでホストできます。 コンソール アプリケーションはテストの実行に一般的に使用されますが、任意の種類の .NET アプリケーションでテスト アプリケーションを作成できます。 これにより、制限がある可能性があるデバイスやブラウザーなどの特殊なコンテキスト内でテストを実行できます。
すべての .NET フォーム ファクターをサポート: ネイティブ AOT を含む、現在および将来の .NET フォーム ファクターをサポートします。
パフォーマンス: 機能と拡張ポイントの間の適切なバランスを見つけ、基本以外のコードでランタイムが肥大化しないようにします。 新しいテスト プラットフォームは、テストの実行方法に関する実装の詳細を提供するのではなく、テスト実行を "調整" するように設計されています。
十分に拡張可能: 新しいプラットフォームは、ランタイム実行を最大限にカスタマイズできるように拡張ポイントに基づいて構築されています。 テスト プロセス ホストを構成し、テスト プロセスを観察し、テスト ホスト プロセス内でテスト フレームワークからの情報を使用することができます。
1 つのモジュールデプロイ: ホスト機能を使用すると、単一のモジュールデプロイ モデルを使用できます。このモデルでは、1 つのコンパイル結果を使用して、アウトプロセスとインプロセスの両方のすべての機能拡張ポイントをサポートできます。異なる実行可能モジュールを出荷する必要はありません。
サポートされるテスト フレームワーク
- MSTest MSTest では、
Microsoft.Testing.Platformのサポートは MSTest ランナーを介して行われます。 - NUnit。 NUnit では、
Microsoft.Testing.Platformのサポートは NUnit ランナーを介して行われます。 - xUnit.net。 詳細については、xUnit.net ドキュメントの Microsoft Testing Platform (xUnit.net v3) と Microsoft Testing Platform (xUnit.net v2) を参照してください。
- TUnit:
Microsoft.Testing.Platformの上に完全に構築され、詳細については、TUnit ドキュメントを参照してください。
サポート対象のターゲット フレームワーク
Microsoft.Testing.Platform は、.NET (.NET 8 以降)、.NET Framework (バージョン 4.6.2 以降) をサポートしており、他のランタイムとの互換性を最大限に高める NETStandard 2.0 を対象としています。
テストを実行およびデバッグする
CLI、Visual Studio、Visual Studio Code、CI パイプラインからの MTP テスト プロジェクトの実行とデバッグに関する詳細なガイダンスについては、「 テストの実行とデバッグ」を参照してください。
オプション
プラットフォームと拡張機能のコマンド ライン オプションの完全な一覧については、 Microsoft.Testing.Platform CLI オプション リファレンスを参照してください。
MSBuild の統合
NuGet パッケージ Microsoft.Testing.Platform.MSBuild は、 Microsoft.Testing.Platform と MSBuild のさまざまな統合を提供します。
-
dotnet testをサポートします。 詳細については、「 dotnet テストを使用したテスト」を参照してください。 -
ProjectCapabilityおよびVisual Studioテスト エクスプローラーに必要なVisual Studio Codeのサポート。 - エントリポイントの自動生成(
Mainメソッド)。 - 設定ファイルの自動生成。
- インストールされている拡張機能パッケージの自動検出と登録。
このパッケージがアクティブな場合 (MSTest、NUnit、xUnit ランナーの既定値)、拡張機能 NuGet パッケージのインストールは必要なすべてであり、拡張機能はコードを変更しなくても自動登録されます。
<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>設定して自動生成されたエントリ ポイントを無効にする場合は、Main メソッドに拡張機能を手動で登録する必要があります。 各拡張機能ページには、その手動登録呼び出しが文書化されています。
注
この統合は推移的に機能し (このパッケージを参照する別のプロジェクトを参照するプロジェクトは、パッケージを参照しているかのように動作します)、 IsTestingPlatformApplication MSBuild プロパティを通じて無効にすることができます。
こちらもご覧ください
.NET