測試報告

這些功能需要安裝額外的 NuGet 套件,如同各節所述。

小提示

使用 Microsoft.Testing.Platform.MSBuild (由 MSTest、NUnit 和 xUnit 測試框架間接包含)時,這些擴充套件會在安裝 NuGet 套件時自動註冊,不需要改動程式碼。 本文所規定的手動註冊僅在你透過設定 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>關閉自動產生的入口點時才需要。

報告檔案名稱

每個報告擴充功能都會將檔案寫入測試結果目錄,而該目錄可使用 --results-directory 選項設定。 若要覆寫名稱,請使用匹配 --report-*-filename 選項。 每個報告區塊都會列出該報告的預設名稱。

檔案名稱可以包含一個相對路徑,且該路徑仍停留在測試結果目錄內,並且可以使用以下替換項目(佔位符):

佔位符 Description
{asm} 項目組件名稱,若無法使用則為 unknown
{tfm} 執行時偵測到的目標框架名稱,例如 net9.0
{arch} 流程架構,例如 x64x86、 或 arm64
{pname} 處理序名稱。
{pid} 處理程序識別碼。
{time} 高精度時間戳記。

例如,--report-trx-filename "{asm}_{tfm}_{arch}.trx" 會重現預設的 TRX 名稱。

備註

預留位置名稱會區分大小寫,並使用小寫字母。 從 MTP 2.3.0 版本起,提供報告檔名的佔位符支援。

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 檔案會保留當機前收集的結果。

選項

選項 Description
--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();

選項

選項 Description
--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。 此擴充仍屬實驗性質,未來版本可能會改變選項與輸出格式。

手動註冊

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

選項

選項 Description
--report-junit 產生 JUnit XML 報告。
--report-junit-filename 產生的 JUnit XML 報告名稱。 該值必須以 結尾。.xml 預設值為 {asm}_{tfm}_{arch}.xml。 若要自訂名稱,請參見 「報表檔案名稱」。 需要 --report-junit

CTRF報告

CTRF 報告會建立一個 JSON 檔案,該檔案使用 Common Test Report 格式 作為測試會話。 此擴充功能需要 Microsoft。Testing.Extensions.CtrfReport NuGet 套件。

備註

從 2.3.0 版本起,已支援 MTP。 此擴充仍屬實驗性質,未來版本可能會改變選項與輸出格式。

手動註冊

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

選項

選項 Description
--report-ctrf 產生 CTRF JSON 報告。
--report-ctrf-filename 產生的 CTRF JSON 報告名稱。 該值必須以 結尾。.json 預設值為 <UserName>_<MachineName>_<assembly>_<tfm>_<timestamp>.ctrf.json。 若要自訂名稱,請參見 「報表檔案名稱」。 需要 --report-ctrf

Azure DevOps 報告

為開發者提供的 Azure DevOps 報告插件增強了測試執行,這些開發者在 GitHub 上託管程式碼,但在 Azure DevOps 建置代理程式上進行建置。 它會在失敗中加入額外資訊,直接在 GitHub PR 中顯示失敗。

 GitHub PR 檔案檢視中的錯誤註解

此擴充套件需要 Microsoft.Testing.Extensions.AzureDevOpsReport NuGet 套件。

手動註冊

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

選項

選項 MTP 版本 Description
--report-azdo 1.9.0 啟用 Azure DevOps 報告產生器。 錯誤與警告會以 Azure DevOps 能理解的格式寫入輸出。
--report-azdo-severity 1.9.0 用於報告事件的嚴重程度。 有效的值為 error (預設值)和 warning
--report-azdo-flaky-history 2.3.0 查詢 Azure DevOps 過去 N 天(1–90 天)內的測試結果歷史記錄,並為回報的失敗加上註記,附上測試波動性脈絡。 需要 --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 列出已隔離測試的完整限定名稱或 glob 模式的文字檔路徑。 匹配失敗會被報告為警告。 需要 --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-onlyfilesall和 。
--report-azdo-upload-artifact-include 2.3.0 使用相對於測試結果目錄的 glob 模式,在 Azure DevOps 成品上傳中包含檔案。 預設為 **/*。 要求 --report-azdo-upload-artifacts 為非 off 的值。
--report-azdo-upload-artifact-exclude 2.3.0 使用相對於測試結果目錄的 glob 模式,將檔案排除在 Azure DevOps 成品上傳之外。 要求 --report-azdo-upload-artifacts 為非 off 的值。
--report-azdo-upload-artifact-name 2.3.0 覆寫 Azure DevOps 成品容器的名稱。 預設為 TestResults_{assemblyName}_{tfm}。 要求 --report-azdo-upload-artifacts 為非 off 的值。
--publish-azdo-test-results 2.3.0 即時將測試結果發布於Azure DevOps Tests分頁。
--publish-azdo-run-name 2.3.0 為即時測試結果發佈設定自訂的 Azure DevOps 測試執行名稱。 需要 --publish-azdo-test-results

備註

MTP 版本欄位列出每個選項首次在穩定版中可用時的 MTP 版本。 Azure DevOps 擴充功能本身在 MTP 1.9.0 中已趨於穩定,並搭配 --report-azdo--report-azdo-severity;其餘選項則於 MTP 2.3.0 新增。

擴充功能會自動偵測其是否在持續整合(CI)環境中運行,方法是檢查 TF_BUILD 環境變數。

GitHub Actions 報表

GitHub Actions 報告會發出 GitHub Actions 原生的工作流程指令,因此測試執行時在執行器上能產生一流的體驗:每個組件的日誌群組、失敗或跳過的測試註解(顯示在工作流程註解標籤中,當來源位置解決後,則在拉取請求的 Files changed diff 中)、Markdown 工作摘要附加於檔案後面,參考如下GITHUB_STEP_SUMMARY,以及慢速測試通知。

這個擴充功能只有在執行在 GitHub Actions(GITHUB_ACTIONS環境變數是 true)且--report-gh切換器已設定時才會啟動;否則不會有任何動作。 啟用時,每個功能預設啟用,並可透過選項 --report-gh-* 單獨關閉。

備註

從 2.3.0 版本起,已支援 MTP。 此擴充仍屬實驗性質,未來版本可能會改變選項與輸出格式。

手動註冊

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

選項

選項 MTP 版本 Description
--report-gh 2.3.0 啟用 GitHub Actions 報告產生器,測試執行 emit 工作流程指令。 要求此次執行必須在 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。 需要 --report-gh
--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