この記事は、Microsoft.Testing.Platform 用のカスタム テスト フレームワークまたは拡張機能を構築する開発者向けです。
注
完全なサンプル コードについては、Microsoft Test Framework リポジトリの TestingPlatformExamples を参照してください。
拡張ポイントの概要
| 拡張ポイント | プロセスのイン/アウト | 目的 |
|---|---|---|
| ITestFramework | 処理中 | 唯一の必須の拡張機能。 テストを検出して実行します。 |
| IDataConsumer | 処理中 | メッセージバスのテストデータを購読し、処理します。 |
| ITestSessionLifetimeHandler | 処理中 | テスト セッションの前後にコードを実行します。 |
| ITestApplicationLifecycleCallbacks | 処理中 | テスト ホストの最初と最後にコードを実行します。 |
| ICommandLineOptionsProvider | 両方とも | カスタム コマンド ライン オプションを追加します。 |
| ITestHostEnvironmentVariableProvider | プロセス外 | テスト ホストを開始する前に環境変数を設定します。 |
| ITestHostProcessLifetimeHandler | プロセス外 | テスト ホスト プロセスを外部で観察します。 |
インプロセス拡張機能とアウトプロセス拡張機能
拡張機能は、次の 2 種類に分類されます。
インプロセス拡張機能は 、テスト フレームワークと共に、テスト ホスト プロセス内で実行されます。
builder.TestHostを使用して登録します。var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHost.AddXXX(/* ... */);アウトプロセス拡張機能は 、テスト ホストを観察する別のプロセスで実行されます。
builder.TestHostControllersを使用して登録します。var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHostControllers.AddXXX(/* ... */);
アウトプロセス拡張機能は、次の場合に必要です。
- テスト ホストを開始する前に環境変数を設定する必要があります。
- ユーザー コードがクラッシュしたり、プロセスがハングしたりする可能性があるため、テスト ホストを外部で監視する必要があります。
アウトプロセス拡張機能が登録されると、プラットフォームは 2 番目のプロセスを自動的に開始します。
IExtension インターフェイス
すべての拡張ポイントは IExtensionから継承され、識別とオプトイン/オプトアウトが提供されます。
public interface IExtension
{
string Uid { get; }
string Version { get; }
string DisplayName { get; }
string Description { get; }
Task<bool> IsEnabledAsync();
}
-
Uid: 拡張機能の一意の識別子。 競合を回避するには、一意の値を選択します。 -
Version: セマンティック バージョン管理を使用する拡張機能のバージョン。 -
DisplayName: ログと--info出力に表示されるわかりやすい名前。 -
Description:--info出力に表示される説明。 -
IsEnabledAsync(): セッションから拡張機能を除外するfalseを返します。 通常、決定は構成またはコマンド ライン オプションに基づいています。
次に読む内容
-
テスト フレームワークを構築する: カスタム
ITestFramework実装を作成し、要求を処理し、テスト結果を報告します。 - 拡張機能をビルドする: データ コンシューマー、セッション ハンドラー、プロセス モニターなどのインプロセス拡張機能とアウトプロセス拡張機能を作成します。
- VSTest Bridge: 既存の VSTest ベースのテスト フレームワークの Microsoft.Testing.Platform への移行を簡略化します。
- 機能: フレームワークと拡張機能の宣言とクエリを実行します。
- サービス: アクセス構成、ログ記録、メッセージ バス、およびその他のプラットフォーム サービス。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET