本文包含有关的故障排除指南。
退出代码
使用已知的退出代码来传达测试失败或应用错误。 退出代码从开始且是非负数。
| 退出代码 | 详细信息 |
|---|---|
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 文件夹。