テスト レポート

これらの機能では、各セクションで説明されているように、追加の NuGet パッケージをインストールする必要があります。

ヒント

Microsoft.Testing.Platform.MSBuild (MSTest、NUnit、xUnit ランナーによって推移的に含まれる) を使用する場合、これらの拡張機能は NuGet パッケージをインストールするときに自動的に登録されます。コードの変更は必要ありません。 この記事で指定されている手動登録は、 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>設定して自動生成されたエントリ ポイントを無効にした場合にのみ必要です。

レポート ファイル名

すべてのレポート拡張機能は、 --results-directory オプションで設定できるテスト結果ディレクトリにファイルを書き込みます。 名前をオーバーライドするには、一致する --report-*-filename オプションを使用します。 各レポート セクションには、そのレポートの既定の名前が一覧表示されます。

ファイル名には、テスト結果ディレクトリ内に留める相対パスを含めることができます。また、次の置換項目 (プレースホルダー) を使用できます。

プレースホルダー [説明]
{asm} エントリアセンブリ名。利用できない場合は unknown
{tfm} 実行時に検出されたターゲット フレームワーク モニカー ( net9.0など)。
{arch} x64x86arm64などのプロセス アーキテクチャ。
{pname} プロセス名。
{pid} プロセス ID。
{time} 高精度タイムスタンプ。

たとえば、 --report-trx-filename "{asm}_{tfm}_{arch}.trx" は既定の TRX 名を再現します。

プレースホルダー名は大文字と小文字を区別し、小文字を使用します。 レポート ファイル名のプレースホルダー のサポートは、バージョン 2.3.0 以降の MTP で利用できます。

レポートの統合

MTP 2.4.0 以降、MTP は、 dotnet test 呼び出しで複数のテスト モジュールが実行された後、または再試行サポートが複数回実行された後に、レポート成果物を自動的に処理します。 この機能は MTP 2.4.0 では試験段階です。

TRX、JUnit、CTRF、および HTML 拡張機能は、レポートの種類別に互換性のある成果物をグループ化し、テスト結果ディレクトリの merged サブディレクトリの下に統合レポートを記述します。 CTRF の統合では、モジュールの結果が結合され、再試行は再試行履歴を含む最終テスト結果に集約されます。 HTML 統合では、マージされた概要が作成され、元のプロセスごとのレポートが保持されます。

カスタム レポート拡張機能の場合、試験的な IArtifactPostProcessor API では、個別の TestModulesRetryAttempts の処理モードが公開されます。 詳細については、「IArtifactPostProcessor拡張機能」を参照してください。

Visual Studio テスト レポート (TRX)

Visual Studioテスト結果ファイル (または TRX) は、テスト結果を発行するための既定の形式です。 この拡張機能には、 Microsoft.Testing.Extensions.TrxReport NuGet パッケージが必要です。

手動登録

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddTrxReportProvider();

手動登録を使用する場合は、TRX レポート プロバイダーを最後に登録します。 現在の実装は登録順序に依存するため、他のすべての拡張機能の後に登録すると、すべてのテスト データが確実にキャプチャされます。

バージョン 1.9.0 以降の MTP で使用できる TRX レポートには、テスト Description フィールドが含まれています。

MTP バージョン 2.3.0 以降で使用できます。TRX の結果は、実行の進行に応じてディスクにストリーム配信されます。 テスト ホストがクラッシュした場合、TRX ファイルはクラッシュ前に収集された結果を保持します。

オプション

Option [説明]
--report-trx TRX レポートを生成します。
--report-trx-filename 生成された TRX レポートの名前。 MTP 2.3.0 以降、既定値は確定的な {asm}_{tfm}_{arch}.trx 形式です。MTP 2.3.0 より前の既定値は <UserName>_<MachineName>_<yyyy-MM-dd_HH_mm_ss.fffffff>.trx。 名前をカスタマイズするには、「 レポート ファイル名」を参照してください。

レポートは、コマンド ライン引数を使用して指定できる既定の --results-directory フォルダー内に保存されます。

HTML レポート

HTML レポートは、テスト セッション用の対話型の自己完結型 HTML ファイルを作成します。 この拡張機能には、Microsoft.Testing.Extensions.HtmlReport NuGet パッケージが必要です。

バージョン 2.3.0 以降の MTP で使用できます。 この拡張機能は試験段階であり、オプションと出力形式は将来のバージョンで変更される可能性があります。

手動登録

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddHtmlReportProvider();

オプション

Option [説明]
--report-html HTML レポートを生成します。
--report-html-filename 生成された HTML レポートの名前。 値は .htmlで終わる必要があります。 既定値は {asm}_{tfm}_{arch}.html です。 名前をカスタマイズするには、「 レポート ファイル名」を参照してください。 --report-html が必要です。

JUnit レポート

JUnit レポートは、テスト セッション用の JUnit 互換 XML ファイルを作成します。 この拡張機能には、Microsoft.Testing.Extensions.JUnitReport NuGet パッケージが必要です。

バージョン 2.3.0 以降の MTP で使用できます。 この拡張機能は試験段階であり、オプションと出力形式は将来のバージョンで変更される可能性があります。

MSTest.Sdk 4.3 以降では、 <EnableMicrosoftTestingExtensionsJUnitReport>true</EnableMicrosoftTestingExtensionsJUnitReport>でこの拡張機能を有効にします。 拡張機能は、MSTest.Sdk プロファイル Default または AllMicrosoft の一部ではありません。

手動登録

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddJUnitReportProvider();

オプション

Option [説明]
--report-junit JUnit XML レポートを生成します。
--report-junit-filename 生成された JUnit XML レポートの名前。 値は .xmlで終わる必要があります。 既定値は {asm}_{tfm}_{arch}.xml です。 名前をカスタマイズするには、「 レポート ファイル名」を参照してください。 --report-junit が必要です。

CTRF レポート

CTRF レポートは、テスト セッションに 共通テスト レポート形式 を使用する JSON ファイルを作成します。 この拡張機能には Microsoft.Testing.Extensions.CtrfReport NuGet パッケージが必要です。

バージョン 2.3.0 以降の MTP で使用できます。 この拡張機能は試験段階であり、オプションと出力形式は将来のバージョンで変更される可能性があります。

手動登録

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddCtrfReportProvider();

オプション

Option [説明]
--report-ctrf CTRF JSON レポートを生成します。
--report-ctrf-filename 生成された CTRF JSON レポートの名前。 値は .jsonで終わる必要があります。 既定値は <UserName>_<MachineName>_<assembly>_<tfm>_<timestamp>.ctrf.json です。 名前をカスタマイズするには、「 レポート ファイル名」を参照してください。 --report-ctrf が必要です。

MSTest 4.4 以降、再試行されたテストの CTRF 結果には、 retries フィールドと retryAttempts フィールドが含まれます。 以前の試行が失敗した後にテストに合格した場合、その結果には flaky: trueも含まれます。 ターミナルの概要では、不安定なテストと再試行されたテストが識別されます。 TRX レポートと JUnit レポートでは、すべての試行を記録するのではなく、テストごとに 1 つの最終結果が保持されます。

Azure DevOps レポート

Azure DevOps レポート プラグインは、GitHubでコードをホストし、Azure DevOpsのビルド エージェントでビルドを行う開発者のために、テストの実行を強化します。 エラーに追加情報が追加され、GitHub PR でエラーが直接表示されます。

 PR ファイル ビューの GitHubエラー注釈

この拡張機能には、 Microsoft.Testing.Extensions.AzureDevOpsReport NuGet パッケージが必要です。

手動登録

var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHost.AddAzureDevOpsProvider();

オプション

Option MTP のバージョン [説明]
--report-azdo 1.9.0 Azure DevOps レポート ジェネレーターを有効にします。 エラーと警告は、Azure DevOps理解できる形式で出力に書き込まれます。
--report-azdo-severity 1.9.0 報告されたイベントに適用する重大度。 有効な値は error (既定値) と warningです。
--report-azdo-groups 2.4.0 アセンブリごとのログ グループを有効または無効にします。 有効にすると、各テスト アセンブリの出力が、Azure Pipelines ログの折りたたみ可能なセクションに表示されます。 有効値は on または off です。 MTP 2.4.0 プレビュー ビルドは既定で on に設定され、安定した MTP 2.4.0 リリースは既定で off に設定されます。 --report-azdo が必要です。
--report-azdo-annotations 2.4.0 失敗したテストとスキップされたテストの注釈を有効または無効にします。 有効な値は on (既定値) と offです。 --report-azdo が必要です。
--report-azdo-flaky-history 2.3.0 過去 N日間 (1~90 日) の Azure DevOps のテスト結果履歴を照会し、報告された失敗について「不安定性」のコンテキストを付与します。 --report-azdo が必要です。
--report-azdo-demote-known-flaky 2.3.0 Azure DevOps履歴ウィンドウで十分に不安定なエラー (既定のしきい値は 25%) をエラーから警告に降格します。 --report-azdo--report-azdo-flaky-historyが必要です。
--report-azdo-quarantine-file 2.3.0 隔離されたテストの完全修飾名またはグロブ パターンが記載されたテキスト ファイルへのパス。 一致するエラーは警告として報告されます。 --report-azdo が必要です。
--report-azdo-summary 2.3.0 テストの実行の最後に Markdown ジョブの概要を書き込み、 ##vso[task.uploadsummary]経由でアップロードします。 省略可能なファイル パス引数は、既定の場所 ({testResultsDir}/azdo-summary-{tfm}.md) をオーバーライドします。 --report-azdo が必要です。
--report-azdo-stackframe-filter 2.3.0 各スタック フレームの完全修飾型プレフィックスに一致する正規表現パターンを追加します。これは、注釈を付けるために拡張機能がユーザーの呼び出しサイトを見つけたときにスキップされます。 このオプションは繰り返し可能で、最大 16 パターンで、各パターンは 500 ミリ秒の一致タイムアウトでコンパイルされます。 これらのパターンは、拡張機能の組み込みの MSTest アサーション実装プレフィックスに追加されます。 --report-azdo が必要です。
--report-azdo-upload-artifacts 2.3.0 テスト結果ファイルをアップロードしたり、ビルド タグをAzure DevOpsに追加したりします。 有効な値は、 off (既定値)、 tags-onlyfiles、および allです。
--report-azdo-upload-artifact-include 2.3.0 テスト結果ディレクトリに対する glob パターンを使用して、Azure DevOps成果物のアップロードにファイルを含めます。 既定値は **/* です。 --report-azdo-upload-artifactsoff以外の値である必要があります。
--report-azdo-upload-artifact-exclude 2.3.0 テスト結果ディレクトリに対する glob パターンを使用して、Azure DevOps成果物のアップロードからファイルを除外します。 --report-azdo-upload-artifactsoff以外の値である必要があります。
--report-azdo-upload-artifact-name 2.3.0 Azure DevOps成果物コンテナー名をオーバーライドします。 既定値は TestResults_{assemblyName}_{tfm} です。 --report-azdo-upload-artifactsoff以外の値である必要があります。
--publish-azdo-test-results 2.3.0 テスト結果を Azure DevOps Tests タブに公開します。
--publish-azdo-run-name 2.3.0 ライブ テスト結果の発行用のカスタム Azure DevOpsテスト実行名を設定します。 --publish-azdo-test-results が必要です。

Warning

複数のテスト アセンブリを並列で実行する場合は、グループを有効にしないでください。 Azure DevOps ##[group]および##[endgroup]書式設定コマンドは、順次および匿名です。 アセンブリ出力が同時に行われると、出力が入り交じったり、グループのネストが不正になったり、行が誤ったアセンブリの下に出力されたりすることがあります。 MTP 2.4.0 プレビュー ビルドを使用する場合は、 --report-azdo-groups off を渡してグループを無効にします。 安定した MTP 2.4.0 リリースでは、既定でグループが無効になります。 1 つのアセンブリまたはシリアル化されたアセンブリの実行に対してのみ、 --report-azdo-groups on を渡します。

[MTP バージョン] 列には、各オプションを含む最初の MTP バージョンが一覧表示されます。 Azure DevOps拡張機能自体は、MTP 1.9.0 で--report-azdo--report-azdo-severityで安定しました。残りのオプションは MTP 2.3.0 または 2.4.0 で追加されました。

拡張機能は、 TF_BUILD 環境変数を確認することで、継続的インテグレーション (CI) 環境で実行されていることを自動的に検出します。

MTP 2.4.0 以降、Azure DevOps Markdown では、dotnet test呼び出しのすべてのテスト モジュール全体の結果が集計されます。 また、コード カバレッジを有効にすると、対象データと合計カウント、パーセンテージ、しきい値の結果、カバレッジ データが部分的な場合のインジケーターが概要に含まれます。

GitHub Actions レポート

GitHub Actions レポートは GitHub Actions ネイティブのワークフロー コマンドを出力するため、テスト実行時にランナー上で優れたエクスペリエンスを実現します。これには、アセンブリごとのログ グループ、失敗およびスキップされたテストの注釈(ワークフローの Annotations タブに表示され、ソースの場所を解決できる場合はプル リクエストの Files changed 差分にも表示)、GITHUB_STEP_SUMMARY が参照するファイルに追記される Markdown のジョブ サマリー、および低速なテストの通知が含まれます。

この拡張機能には Microsoft.Testing.Extensions.GitHubActionsReport NuGet パッケージが必要です。

拡張機能は、実行がGitHub Actions (GITHUB_ACTIONS環境変数がtrue) にあり、--report-gh スイッチが設定されている場合にのみアクティブになります。それ以外の場合は何も実行されません。 アクティブな場合、各機能は既定で有効になり、 --report-gh-* オプションを使用して個別にオフにすることができます。

Important

--report-gh オプションは、Microsoft.Testing.Extensions.GitHubActionsReportに属しています。 GitHubActionsTestLogger パッケージには、--report-github別のオプションがあります。 オプションはエイリアスではなく、テスト プロジェクトがオプションを所有するパッケージを登録する場合にのみ機能します。

この拡張機能は、MTP 2.3.0 以降で使用できます。 MTP 2.4.0 以降では、パブリック エントリ ポイントは試験段階ではなくなりました。

手動登録

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddGitHubActionsProvider();

オプション

Option MTP のバージョン [説明]
--report-gh 2.3.0 GitHub Actions レポート ジェネレーターを有効にして、テスト実行でワークフロー コマンドを出力できるようにします。 実行がGitHub Actions上にある必要があります。
--report-gh-groups 2.3.0 アセンブリごとのログ グループを有効または無効にします。 有効な値は on (既定値) と offです。 --report-gh が必要です。
--report-gh-annotations 2.3.0 失敗したテストとスキップされたテストの注釈を有効または無効にします。 有効な値は on (既定値) と offです。 --report-gh が必要です。
--report-gh-step-summary 2.3.0 拡張機能が Markdown ジョブの概要を、 GITHUB_STEP_SUMMARYによって参照されるファイルに書き込むかどうかを制御します。 有効な値は on (既定値)、 off、および MTP 2.4.0 以降では on-failure--report-gh が必要です。
--report-gh-step-summary-sections 2.4.0 概要コンテンツを選択します。 有効な値は、 test-resultsslow-testscoverage、および all です (既定値)。 --report-ghと、off以外の概要モードが必要です。
--report-gh-slow-test-notices 2.3.0 低速テスト通知を有効または無効にします。 有効な値は on (既定値) と offです。 --report-gh が必要です。
--report-gh-slow-test-threshold 2.3.0 低速テストの通知が出力されるまでにテストを実行できる時間。 90s2m1.5hなどの単位サフィックスを持つ秒数または値を受け取ります。 既定値は 60s です。 --report-gh が必要です。

MTP 2.4.0 以降、GitHub Actions Markdown では、dotnet test呼び出し内のすべてのテスト モジュール全体の集計結果が集計されます。 また、コード カバレッジを有効にする場合は、 coverage または all を選択して、対象となるカウントと合計カウント、パーセンテージ、しきい値の結果、カバレッジ データが部分的な場合のインジケーターを含めます。