Microsoft.Testing.Platform 概述
Microsoft.Testing.Platform 是 VSTest 的轻型可移植替代项,用于在所有上下文(持续集成 (CI) 管道、CLI、Visual Studio 测试资源管理器和 VS Code 文本资源管理器等)中运行测试。 Microsoft.Testing.Platform 直接嵌入到 MSTest 测试项目中,并且不存在任何其他应用依赖项(例如运行测试所需的 vstest.console
或 dotnet test
)。
Microsoft.Testing.Platform
为开源项目。 可以在 microsoft/testfx GitHub 存储库中找到 Microsoft.Testing.Platform
代码。
受支持的测试框架
- 项目。 在 MSTest 中,
Microsoft.Testing.Platform
支持是通过 MSTest 运行程序实现的。 - NUnit。 在 NUnit 中,
Microsoft.Testing.Platform
支持是通过 NUnit 运行程序实现的。 - xUnit:正在推进,有关详细信息,请参阅针对 xUnit 的 Microsoft 测试平台。
- TUnit:完全构建在
Microsoft.Testing.Platform
之上,有关详细信息,请参阅 TUnit 文档
运行和调试测试
系统会以可直接运行(或调试)的可执行文件的形式生成 Microsoft.Testing.Platform
测试项目。 没有额外的测试运行控制台或命令。 如果出现错误,应用会退出并显示非零退出代码,这与大多数可执行文件的典型情况相同。 有关已知退出代码的详细信息,请参阅 Microsoft.Testing.Platform 退出代码。
重要
默认情况下,Microsoft.Testing.Platform
会收集遥测数据。 有关选择退出的详细信息和选项,请参阅 Microsoft.Testing.Platform 遥测。
使用 dotnet publish
发布测试项目并直接运行应用是运行测试的另一种方法。 例如,执行 ./Contoso.MyTests.exe
。 在某些情况下,也可以使用 dotnet build
生成可执行文件,但可能需要考虑极端情况,例如本机 AOT。
使用 dotnet run
dotnet run
命令可用于生成和运行测试项目。 这是运行测试的最简单方法,尽管有时速度最慢。 在本地编辑和运行测试时,使用 dotnet run
是可行的,因为它可确保在需要时重新生成测试项目。 dotnet run
还将在当前文件夹中自动查找项目。
dotnet run --project Contoso.MyTests
有关 dotnet run
的详细信息,请参阅 dotnet run。
使用 dotnet exec
dotnet exec
或 dotnet
命令用于执行(或运行)已生成的测试项目,这是直接运行应用程序的替代方法。 dotnet exec
需要已生成的测试项目 dll 的路径。
dotnet exec Contoso.MyTests.dll
或
dotnet Contoso.MyTests.dll
注意
提供测试项目可执行文件(*.exe)的路径导致错误:
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net8.0\Contoso.MyTests.exe'
有关 dotnet exec
的详细信息,请参阅 dotnet exec。
使用 dotnet test
Microsoft.Testing.Platform
提供包含 vstest.console.exe
和 dotnet test
的兼容性层,以确保可以在启用新执行方案时像以前一样运行测试。
dotnet test Contoso.MyTests.dll
选项
下面的列表仅描述了平台选项。 若要查看每个扩展提供的特定选项,请参阅扩展文档页或使用 --help
选项。
--diagnostic
启用诊断日志记录。 默认日志级别为 Trace
。 该文件以名称格式 log_[MMddHHssfff].diag
写入到输出目录中。
--diagnostic-filelogger-synchronouswrite
强制内置的文件记录器以同步方式写入日志。 对于在进程崩溃时不想丢失任何日志条目的场景非常有用。 这会降低测试执行速度。
--diagnostic-output-directory
诊断日志记录的输出目录,如果未指定,则会在默认的 TestResults 目录中生成该文件。
--diagnostic-output-fileprefix
日志文件名的前缀。 默认为 "log_"
。
--diagnostic-verbosity
当使用 --diagnostic
开关时定义详细程度级别。 可用值包括 Trace
、Debug
、Information
、Warning
、Error
和 Critical
。
--help
打印出有关如何使用命令的说明。
-ignore-exit-code
允许忽略一些非零退出代码,并转而返回为 0
。 有关详细信息,请参阅忽略特定的退出代码。
--info
显示有关 .NET 测试应用程序的高级信息,例如:
- 平台。
- 环境。
- 每个已注册的命令行提供程序,例如其
name
、version
、description
和options
。 - 每个已注册的工具,例如其
command
、name
、version
和description
,以及所有命令行提供程序。
此功能用于了解将注册相同命令行选项的扩展,或扩展(或平台)的多个版本之间可用选项的更改。
--list-tests
列出可用的测试。 不会执行测试。
--minimum-expected-tests
指定预期要运行的最小测试数。 默认情况下,至少要运行一个测试。
--results-directory
用于放置测试结果的目录。 如果指定的目录不存在,则会创建该目录。 默认为 TestResults
,位于包含测试应用程序的目录中。
MSBuild 集成
NuGet 包 Microsoft.Testing.Platform.MSBuild 为 Microsoft.Testing.Platform
提供与 MSBuild 的各种集成:
- 支持
dotnet test
。 有关详细信息,请参阅 dotnet 测试集成。 Visual Studio
和Visual Studio Code
测试资源管理器需要支持ProjectCapability
。- 自动生成入口点(
Main
方法)。 - 自动生成配置文件。
注意
此集成以可传递的方式工作(引用其他引用此包的项目的项目的行为类似引用该包),并且可以通过 IsTestingPlatformApplication
MSBuild 属性禁用。