これらの拡張機能は、Microsoft.Testing.Platform (MTP) と、アプリケーションですでに使用しているMicrosoft.Extensions.* ライブラリを橋渡しすることで、プラットフォーム コンポーネントと拡張機能コンポーネントが、コードの他の部分と同じインフラストラクチャを通じて機能するようにします。 各セクションで説明されているように、各拡張機能には追加の NuGet パッケージが必要です。
ヒント
Microsoft.Testing.Platform.MSBuild を使用する場合、ロギング パッケージは生成されたエントリ ポイントを使用して自動的に登録されます。 構成パッケージには IConfiguration インスタンスが必要であり、ホスティング パッケージには TestingPlatformHostFactory またはカスタム エントリ ポイントが必要であるため、登録セクションに従います。
ブリッジの記録
ロギング ブリッジは、Microsoft.Testing.Platform の診断ログを ILogger に転送するため、プラットフォームと拡張機能のログは、アプリケーションが既に使用しているのと同じ Microsoft.Extensions.Logging パイプラインを流れます。 カスタム MTP ロガー プロバイダーを記述しなくても、既存のログ スタック (コンソール、デバッグ、セリログ、Application Insights、OpenTelemetry、またはカスタム ILoggerProvider ) を再利用できます。 この拡張機能には Microsoft.Testing.Extensions.Logging NuGet パッケージが必要です。
Note
バージョン 2.3.0 以降の MTP で使用できます。 この拡張機能は試験段階であり、オプションと出力形式は将来のバージョンで変更される可能性があります。
ブリッジは、プラットフォームの診断ログが有効になっている場合にのみ、各メッセージを転送します。 プラットフォームの有効なログ レベルが None されている場合 (既定では、 --diagnosticを渡さない限り)、構成デリゲートは呼び出されず、ロガー ファクトリは作成されません。
ILoggingBuilderで設定したカテゴリごとのフィルターは、プラットフォームの有効な診断レベルを絞り込むことができますが、拡張することはできません。
手動登録
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsLogging(logging => logging.AddConsole());
設定スナップショット
試験的な Microsoft.Testing.Extensions.Configuration パッケージは、アプリケーション所有の IConfiguration の読み取り専用スナップショットを MTP の構成パイプラインに追加します。
テスト アプリケーションをビルドする前に、構成を登録します。
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsConfigurationSnapshot(configuration);
既定では、スナップショットは順序 2を使用します。 MTP コマンド ライン値 (順序0) と環境変数 (順序1) が優先されますが、スナップショットはtestconfig.json(順序3 ) よりも優先されます。 アプリケーションで別の優先順位が必要な場合は、別の順序を渡します。
MTP は、 BuildAsync が構成パイプラインをビルドするときにスナップショットを読み取ります。 後の変更と再読み込み通知は伝達されません。 呼び出し元は構成の所有権を保持し、階層キーは標準の : 区切り記号を保持し、登録は現在のプロセスにのみ適用されます。 ライブ構成オブジェクトは、個別に起動されたコントローラーまたはテスト ホスト プロセスに入りません。
ホスト統合
試験的な Microsoft.Testing.Extensions.Hosting パッケージは、アプリケーション所有の IHost内で MTP を実行します。 ホストは構成ルートのままであり、サービス プロバイダー、構成、ログ記録、OpenTelemetry プロバイダー、有効期間、破棄を所有しています。
生成されたエントリ ポイントの場合は、 TestingPlatformHostFactory を、起動されていない新しい Task<IHost>を返す完全修飾静的メソッドに設定します。
<TestingPlatformHostFactory>Contoso.Tests.TestHost.CreateHost</TestingPlatformHostFactory>
ホストが OpenTelemetry プロバイダーを所有し、テスト プロジェクトがMicrosoft.Testing.Extensions.OpenTelemetryを参照するときに、TestingPlatformOpenTelemetryModeをHostOwnedに設定します。 生成されたエントリポイントは、ホストを作成して破棄処理を行い、自己登録された拡張機能を保持し、コマンドラインの --help と --info についてはファクトリを介さずに処理します。
カスタム エントリ ポイントの場合は、ホストで RunTestingPlatformAsync を呼び出し、そのコールバックを使用してテスト フレームワークを登録します。 このメソッドは、構成スナップショットをインポートし、MTP 診断をホストの ILoggerFactoryに転送し、MTP の前にホストを開始し、ホストと呼び出し元の取り消しを MTP にリンクし、MTP 終了コードを返し、 finally ブロック内のホストを停止します。 ホストの破棄は、引き続き呼び出し元が行います。
MTP は、 --list-tests json、JSON-RPC サーバー モード、 dotnet test プロトコルなどのマシンで読み取り可能なモードに使用するため、ホストの起動、シャットダウン、ログ、エクスポーター メッセージを含まない標準出力を保持します。 また、再試行、クラッシュ ダンプ、またはハング ダンプのシナリオではコントローラーと子プロセスでファクトリが呼び出される可能性があるため、プロセス再起動拡張機能で使用されるホスト ファクトリ内の排他的グローバル リソースは避けてください。
Important
構成 API とホスティング API では、 TPEXP 診断 ID が使用され、今後のリリースで変更される可能性があります。 MTP 2.5 プレビュー パッケージで使用できます。
.NET