这些功能需要安装其他 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} |
进程 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-only和 filesall。 |
--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 | 发出慢速测试通知之前测试可运行的时长。 接受不带单位的秒数,或带单位后缀的值,例如 90s、2m 或 1.5h。 默认值为 60s。 需要 --report-gh。 |