使用 Microsoft.Testing.Platform 进行 dotnet 测试 (MTP)

本文 适用于: ✔️ .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 newdotnet builddotnet rundotnet testdotnet publishdotnet 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>

    指定报告测试时的输出详细程度。 有效值为 NormalDetailed。 默认值为 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 扩展

    小窍门

    若要指定特定项目的额外参数,请使用 TestingPlatformCommandLineArguments MSBuild 属性。

注释

若要启用对文件的跟踪日志记录,请使用环境变量 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 项目中运行测试,并将 MSBuild DefineConstants 属性设置为 DEV

    dotnet test --project ./TestProject/TestProject.csproj -p:DefineConstants="DEV"
    

另请参阅