这些功能需要安装其他 NuGet 包,如每个部分所述。
小窍门
使用 Microsoft.Testing.Platform.MSBuild (由 MSTest、NUnit 和 xUnit 运行程序以可传递方式包含)时,这些扩展会在安装其 NuGet 包时自动注册,无需更改代码。 只有在通过设置 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>禁用自动生成的入口点时,才需要本文中指定的手动注册。
故障转储
此扩展允许在进程崩溃时创建崩溃转储文件。 此扩展需要 Microsoft.Testing.Extensions.CrashDump NuGet 包。
手动注册
var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHostControllers.AddCrashDumpProvider();
选项
| Option | Description |
|---|---|
--crashdump |
在测试主机进程崩溃时生成转储文件。 .NET 6.0+ 中支持。 |
--crashdump-filename |
指定转储文件的文件名。 |
--crashdump-type |
指定转储文件的类型。 有效值为 Mini、Heap、Triage 和 Full。 默认值为 Full. 有关详细信息,请参阅小型转储的类型。 |
--crash-report |
[仅限 Linux/macOS]在测试进程崩溃时生成 JSON 崩溃报告。 与 --crashdump 结合使用,以同时生成转储文件。 单独使用时需要 .NET 7+,与 --crashdump 结合使用时需要 .NET 6+。 不支持Windows,因为.NET运行时忽略 Windows 上的基础 DOTNET_EnableCrashReport 和 DOTNET_EnableCrashReportOnly 环境变量(dotnet/runtime#80191)。 从版本 2.3.0 开始,MTP 中可用。 |
--crash-report-if-supported |
与 --crash-report 相同,但在不支持生成崩溃报告的平台上会被忽略,并显示一条提示信息。 使用此选项可在包含Windows的 CI 矩阵之间保留相同的命令行。 与 --crash-report 互斥。 从版本 2.3.0 开始,MTP 中可用。 |
--crash-sequence |
控制是否生成一个序列文件,用于列出在测试会话期间开始和结束的测试,并与故障转储或崩溃报告一同生成。 通过该文件,无需检查转储文件,即可确定发生崩溃时正在运行的测试。 有效值为 on (默认值;也接受 true、 enable接受) 1或 off (也接受 false、 disable和 0)。 从版本 2.3.0 开始,MTP 中可用。 |
注意
该扩展与 .NET Framework 不兼容,将被无提示忽略。 对于 .NET Framework 支持,可以使用 Sysinternals ProcDump 启用事后调试。 有关详细信息,请参阅 “启用事后调试:Window Sysinternals ProcDump”。 事后调试解决方案还将收集.NET的进程崩溃信息,以便在面向.NET和 .NET Framework 测试应用程序时避免使用扩展。
挂起转储
使用此扩展可以在给定的超时后创建转储文件。 此扩展需要 Microsoft.Testing.Extensions.HangDump NuGet 包。
手动注册
var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHostControllers.AddHangDumpProvider();
选项
| Option | Description |
|---|---|
--hangdump |
在测试主机进程挂起的情况下生成转储文件。 |
--hangdump-filename |
指定转储文件的文件名。 支持以下占位符: {pname} (测试应用程序名称)、 {pid} (进程 ID)、 {asm} (条目程序集名称)、 {tfm} (目标框架名字对象)和 {time} (时间戳)。 旧 %p 令牌(进程 ID)也支持向后兼容性。 |
--hangdump-timeout |
指定生成转储前的不活动持续时间。 超时值是采用以下格式之一指定的:1.5h、1.5hour、1.5hours90m、90min、90minute、90minutes5400s、5400sec、5400second、5400seconds500ms、500mil、500millisecond、500milliseconds1d,1day. 1days 空数(无后缀)解释为毫秒。 默认值为 30m (30 分钟)。 |
--hangdump-type |
指定转储文件的类型。 有效值为 Mini、Heap、Full、Triage(在 .NET Framework 上不可用)和 None。 默认值为 Full. 有关详细信息,请参阅小型转储的类型。 该值 None 在 MTP 中可用,从版本 2.1.0 开始。 |
--hangdump-type-if-supported |
与 --hangdump-type 相同,但当所请求的类型在当前运行时不可用时,会显示一条提示性消息,并回退到最接近的受支持转储类型。 例如,Triage仅在 .NET (Core) 上受支持,回退到 .NET Framework 上的 Mini。 使用此选项可在混合 .NET(Core)和 .NET Framework 的 CI 矩阵之间保留相同的命令行。 有效值为 Mini、Heap、Full、Triage 和 None。 与 --hangdump-type 互斥。 从版本 2.3.0 开始,MTP 中可用。 |