這些功能需要安裝額外的 NuGet 套件,如同各節所述。
小提示
使用 Microsoft.Testing.Platform.MSBuild (由 MSTest、NUnit 和 xUnit 測試框架間接包含)時,這些擴充套件會在安裝 NuGet 套件時自動註冊,不需要改動程式碼。 本文所規定的手動註冊僅在你透過設定 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>關閉自動產生的入口點時才需要。
報告檔案名稱
每個報告擴充功能都會將檔案寫入測試結果目錄,而該目錄可使用 --results-directory 選項設定。 若要覆寫名稱,請使用匹配 --report-*-filename 選項。 每個報告區塊都會列出該報告的預設名稱。
檔案名稱可以包含一個相對路徑,且該路徑仍停留在測試結果目錄內,並且可以使用以下替換項目(佔位符):
| 佔位符 | Description |
|---|---|
{asm} |
項目組件名稱,若無法使用則為 unknown。 |
{tfm} |
執行時偵測到的目標框架名稱,例如 net9.0。 |
{arch} |
流程架構,例如 x64、 x86、 或 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 中顯示失敗。
此擴充套件需要 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-only、 files、 all和 。 |
--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 | 測試在發出慢速測試通知前可執行的時間長度。 接受純秒數或帶有單位後綴的數值,如 90s、 2m、 1.5h或 。 預設值為 60s。 需要 --report-gh。 |