测试报告

这些功能需要安装其他 NuGet 包,如每个部分所述。

小窍门

使用 Microsoft.Testing.Platform.MSBuild (由 MSTest、NUnit 和 xUnit 运行程序以可传递方式包含)时,这些扩展会在安装其 NuGet 包时自动注册,无需更改代码。 只有在通过设置 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>禁用自动生成的入口点时,才需要本文中指定的手动注册。

报告文件名称

每个报表扩展都会将其文件写入测试结果目录,可以使用该 --results-directory 选项进行设置。 若要覆盖名称,请使用对应的 --report-*-filename 选项。 每个报表部分列出了该报表的默认名称。

文件名可以包含保留在测试结果目录中的相对路径,并且可以使用以下替换项(占位符):

占位符 Description
{asm} 入口程序集名称;如果不可用,则为 unknown
{tfm} 在运行时检测到目标框架标识符,例如 net9.0
{arch} 进程体系结构,例如 x64x86arm64
{pname} 进程名称。
{pid} 进程 ID。
{time} 高精度时间戳。

例如, --report-trx-filename "{asm}_{tfm}_{arch}.trx" 重现默认的 TRX 名称。

注释

占位符名称区分大小写,且应使用小写字母。 从版本 2.3.0 开始,MTP 中提供了报表文件名的占位符支持。

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 字段。

注释

从版本 2.3.0 开始的 MTP 中可用,运行过程中 TRX 结果流式传输到磁盘。 如果测试主机崩溃,TRX 文件会在崩溃之前保留收集的结果。

选项

Option 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();

选项

Option 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();

选项

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

选项

Option 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 中加入的。

该扩展通过检查 TF_BUILD 环境变量自动检测它在持续集成(CI)环境中运行。

GitHub Actions 报告

GitHub Actions 报告器会输出 GitHub Actions 原生的工作流命令,从而使测试运行在运行器上提供一流的体验:按程序集划分的日志组、失败和跳过测试的注释(显示在工作流的 Annotations 选项卡中,并且在源位置可解析时,也会显示在拉取请求的 Files changed 差异视图中)、追加到 GITHUB_STEP_SUMMARY 所引用文件中的 Markdown 作业摘要,以及慢速测试通知。

仅当运行在GitHub Actions(GITHUB_ACTIONS环境变量为true)且--report-gh开关已设置时,该扩展才会激活;否则不会执行任何操作。 处于活动状态时,默认启用每个功能,并可以使用其 --report-gh-* 选项单独关闭。

注释

从版本 2.3.0 开始,MTP 中可用。 此扩展是实验性的,其选项和输出格式可能会在将来的版本中更改。

手动注册

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

选项

Option MTP 版本 Description
--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。 需要 --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