本文 适用于: ✔️ .NET 10 SDK 及更高版本
Name
dotnet test - 用于通过 Microsoft.Testing.Platform 执行单元测试的 .NET 测试驱动程序。
概要
dotnet test
[--project <PROJECT_PATH>]
[--solution <SOLUTION_PATH>]
[--test-modules <EXPRESSION>]
[--root-directory <ROOT_PATH>]
[--max-parallel-test-modules <NUMBER>]
[-a|--arch <ARCHITECTURE>]
[-c|--configuration <CONFIGURATION>]
[-f|--framework <FRAMEWORK>]
[--os <OS>]
[-r|--runtime <RUNTIME_IDENTIFIER>]
[-v|--verbosity <LEVEL>]
[--no-build]
[--no-restore]
[--no-ansi]
[--no-progress]
[--output <VERBOSITY_LEVEL>]
[--no-launch-profile]
[--no-launch-profile-arguments]
[<args>...]
dotnet test -h|--help
Description
使用 Microsoft 测试平台,dotnet test 运行速度比 VSTest 更快。 与测试相关的参数不再固定,因为它们与测试项目中的已注册扩展相关联。 此外,MTP 在运行测试时支持通配筛选器。 有关详细信息,请参阅 Microsoft.Testing.Platform。
警告
Microsoft.Testing.Platform 通过 global.json选择加入时,dotnet test 要求所有测试项目都使用 Microsoft.Testing.Platform。 如果任何测试项目都使用 VSTest,则这是一个错误。
隐式还原
无需运行 dotnet restore,因为它由所有需要还原的命令隐式运行,如 dotnet new、dotnet build、dotnet run、dotnet test、dotnet publish 和 dotnet pack。 若要禁用隐式还原,请使用 --no-restore 选项。
在某些显式还原有意义的场景中,dotnet restore 命令仍然有用,比如在 Azure DevOps Services 中进行持续集成构建时,或在需要显式控制还原发生时间的生成系统中。
有关如何管理 NuGet 源的信息,请参阅 dotnet restore 文档。
选项
注释
一次只能使用以下选项之一: --project、 --solution或 --test-modules。 无法组合这些选项。
此外,使用 --test-modules时,不能指定 --arch、--configuration、--framework、--os或 --runtime。 这些选项与已生成的模块无关。
--project <PROJECT_PATH>指定要运行的项目文件的路径(文件夹名称或完整路径)。 如果未指定,则默认为当前目录。
--solution <SOLUTION_PATH>指定要运行的解决方案文件的路径(文件夹名称或完整路径)。 如果未指定,则默认为当前目录。
--test-modules <EXPRESSION>使用 .NET 中的文件通配筛选测试模块。 只有属于这些测试模块的测试才会运行。 有关如何在 .NET 中使用文件通配的详细信息和示例,请参阅 文件通配。
--root-directory <ROOT_PATH>指定
--test-modules选项的根目录。 它只能与--test-modules选项一起使用。--max-parallel-test-modules <NUMBER>指定可并行运行的最大测试模块数。 默认值为 Environment.ProcessorCount。
-
-a|--arch <ARCHITECTURE>指定目标体系结构。 这是一种简写语法,用于设置 运行时标识符(RID),其中提供的值与默认 RID 结合使用。 例如,在
win-x64计算机上,指定--arch x86将 RID 设置为win-x86。 如果使用此选项,请不要使用-r|--runtime选项。 自 .NET 6 预览版 7 起可用。 -
-c|--configuration <CONFIGURATION>定义生成配置。 大多数项目的默认值是
Debug,但你可以替代项目中的生成配置设置。 -f|--framework <FRAMEWORK>要对其运行测试的目标框架的目标框架名字对象 (TFM)。 目标框架还必须在项目文件中进行指定。
-
--os <OS>指定目标操作系统(OS)。 这是一种简写语法,用于设置 运行时标识符(RID),其中提供的值与默认 RID 结合使用。 例如,在
win-x64计算机上,指定--os linux将 RID 设置为linux-x64。 如果使用此选项,请不要使用-r|--runtime选项。 自 .NET 6 起可用。 -r|--runtime <RUNTIME_IDENTIFIER>要针对其测试的目标运行时。
缩写形式
-r从 .NET SDK 7 开始可用。注释
不支持对具有全局
RuntimeIdentifier属性(显式或通过或通过--arch--runtime--os或)的解决方案运行测试。 请改为在单个项目级别设置RuntimeIdentifier。-
-v|--verbosity <LEVEL>设置命令的详细级别。 允许的值为
q[uiet]、m[inimal]、n[ormal]、d[etailed]和diag[nostic]。 有关详细信息,请参阅 LoggerVerbosity。 --no-build指定在运行之前不会生成测试项目。 它还隐式设置
--no-restore标志。--no-restore指定运行命令时不执行隐式还原。
--no-ansi禁用将 ANSI 转义字符输出到屏幕。
--no-progress禁用报告进度到屏幕。
--output <VERBOSITY_LEVEL>指定报告测试时的输出详细程度。 有效值为
Normal和Detailed。 默认值为Normal。--no-launch-profile请勿尝试使用 launchSettings.json 配置应用程序。 默认情况下,
launchSettings.json使用此参数可将环境变量和命令行参数应用于测试可执行文件。--no-launch-profile-arguments不要使用在启动配置文件中指定的参数
commandLineArgs来运行应用程序。--property:<NAME>=<VALUE>设置一个或多个 MSBuild 属性。 通过重复选项指定多个属性:
--property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>短格式
-p可用于--property。 这同样适用于/property:property=value及其短形式/p。 有关可用参数的详细信息,请参阅 dotnet msbuild 文档。-
-?|-h|--help打印出有关如何使用命令的说明。
args指定要传递给测试应用程序的额外参数。 使用空格分隔多个参数。 有关传递内容的详细信息和示例,请参阅 Microsoft.Testing.Platform 概述 和 Microsoft.Testing.Platform 扩展。
小窍门
若要指定特定项目的额外参数,请使用
TestingPlatformCommandLineArgumentsMSBuild 属性。
注释
若要启用对文件的跟踪日志记录,请使用环境变量 DOTNET_CLI_TEST_TRACEFILE 提供跟踪文件的路径。
例子
在当前目录中的项目或解决方案中运行测试:
dotnet test运行
TestProject项目中的测试:dotnet test --project ./TestProject/TestProject.csproj在
TestProjects解决方案中运行测试:dotnet test --solution ./TestProjects/TestProjects.sln使用
TestProject.dll程序集运行测试:dotnet test --test-modules "**/bin/**/Debug/net10.0/TestProject.dll"使用根目录
TestProject.dll程序集运行测试:dotnet test --test-modules "**/bin/**/Debug/net10.0/TestProject.dll" --root-directory "c:\code"使用代码覆盖率在当前目录中运行测试:
dotnet test --coverage在
TestProject项目中运行测试,并为-bl提供msbuild(二进制日志)参数:dotnet test --project ./TestProject/TestProject.csproj -bl在
TestProject项目中运行测试,并将 MSBuildDefineConstants属性设置为DEV:dotnet test --project ./TestProject/TestProject.csproj -p:DefineConstants="DEV"
另请参阅
- 框架和目标
- .NET 运行时标识符 (RID) 目录
- Microsoft.Testing.Platform
- Microsoft.Testing.Platform 扩展
- dotnet 测试
- 使用 VSTest dotnet 测试