通过


Microsoft.Testing.Platform 故障排除

本文包含有关的故障排除指南。

退出代码

使用已知的退出代码来传达测试失败或应用错误。 退出代码从开始且是非负数。

退出代码 详细信息
0 退出代码指示成功。 所有选择的测试都成功完成,并且没有出现任何错误。
1 退出代码表示未知错误,并作为泛捕机制使用。 若要查找其他错误信息和详细信息,请查看输出。
2 退出代码 用于指示至少有一个测试失败。
3 退出代码 指示测试会话已中止。 可以使用 CtrlC 中止会话,例如。
4 退出代码 指示已用扩展的设置无效,测试会话无法运行。
5 退出代码 指示传递给测试应用的命令行参数无效。
(不再使用) 退出代码 不再由平台生成;它之前指示测试会话正在使用未实现的功能。
7 退出代码 指示测试会话无法成功完成并可能崩溃。 这可能是由通过测试控制器扩展点运行的测试会话引起的。
8 退出代码 指示测试会话运行零测试。
9 退出代码 指示违反了已执行测试的最低执行策略。
10 退出代码 指示测试适配器 Testing.Platform Test Framework、MSTest、NUnit 或 xUnit 未能运行测试,因为基础结构原因与测试本身无关。 例如,无法创建测试所需的装置。
11 退出代码 指示如果依赖进程退出,测试进程将退出。
12 退出代码 指示测试会话无法运行,因为客户端不支持任何受支持的协议版本。
13 退出代码 指示由于使用 命令行选项达到指定数目的最大失败测试,测试会话已停止。 有关详细信息,请参阅 Microsoft.Testing.Platform CLI 选项参考中的“选项”部分

若要启用详细日志记录并排查问题,请参阅 诊断日志记录。

忽略特定退出代码

默认情况下,设计为严格,但允许配置。 因此,用户可以决定应忽略哪些退出代码(将返回退出代码 而不是原始退出代码)。

若要忽略特定的退出代码,请使用 命令行选项或 环境变量。 接受的格式是由分号分隔的要忽略的退出代码列表(例如,)。 一种常见方案是,测试失败不应导致非零退出代码(这对应于忽略退出代码 )。

诊断日志记录

该平台提供内置的诊断日志记录,可帮助你排查测试执行问题。 可以通过命令行选项或环境变量启用诊断日志记录。

命令行选项

以下 平台选项 提供了用于对测试应用进行故障排除的有用信息:

  • --info
  • --diagnostic
  • --diagnostic-synchronous-write
  • --diagnostic-verbosity
  • --diagnostic-file-prefix
  • --diagnostic-output-directory

环境变量

还可以使用环境变量启用诊断日志:

环境变量名称 Description
TESTINGPLATFORM_DIAGNOSTIC 如果设置为 ,则启用诊断日志记录。
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY 定义详细程度级别。 可用值包括 、、、、 和 。
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY 诊断日志记录的输出目录,如果未指定,则会在默认的 TestResults 目录中生成该文件。
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX 日志文件名的前缀。 默认为 。
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE 强制内置的文件记录器以同步方式写入日志。 对于在进程崩溃时不想丢失任何日志条目的场景非常有用。 这会降低测试执行速度。

注释

环境变量优先于命令行参数。

解决配置错误

Microsoft.Testing.Platform.MSBuild

下面是与 Microsoft.Testing.Platform.MSBuild 相关的常见配置错误。

错误 CS8892:由于找到了同步入口点“Program.Main(string[])”,因此不会将方法“TestingPlatformEntryPoint.Main(string[])”用作入口点。

在测试项目中手动定义入口点 () 或从已具有入口点的应用程序引用测试项目会导致与 生成的入口点冲突。 若要避免此问题,请执行以下步骤之一:

  • 删除手动定义的入口点,通常是 中的 方法,让测试平台生成一个入口点。

  • 通过设置 MSBuild 属性来禁用入口点的生成。

  • 通过在引用测试项目的项目中设置 MSBuild 属性来完全禁用 的可传递依赖项。 从非测试项目引用测试项目(例如引用测试应用程序的控制台应用)时,需要这样做。

Microsoft.Testing.Extensions.Fakes

Fakes 错误。无法解析来自 COR_PROFILER_PATH 和 COR_PROFILER 环境变量的探查器路径

如果 Bin 文件夹中不存在所有 Fakes 程序集,则可能会出现此错误。

  • 请确保项目使用 MSTest.SDK 或引用 Microsoft.Testing.Extensions.Fakes。
  • 对于 .NET Framework 项目,请避免设置 <PlatformTarget>AnyCPU</PlatformTarget>,因为这样 NuGet 不会将所有文件复制到 bin 文件夹。