在 Microsoft.Testing.Platform 中使用 dotnet test
本文介绍如何在使用 Microsoft.Testing.Platform
时使用 dotnet test
运行测试,以及可用于配置通过 Microsoft.Testing.Platform 运行测试时生成的 MSBuild 输出的各种选项。
本文介绍如何使用 dotnet test
在使用 Microsoft.Testing.Platform
的解决方案 (*.sln) 中运行所有测试。
dotnet test
集成
dotnet test 命令是一种从解决方案、项目或已生成的程序集运行测试的方法。 Microsoft.Testing.Platform 会连接到此基础结构,以提供统一的方法来运行测试,尤其是在从 VSTest 迁移到 Microsoft.Testing.Platform
时。
dotnet test
集成 - VSTest 模式
Microsoft.Testing.Platform
提供一个 兼容层 (VSTest Bridge) ,可以无缝使用 dotnet test
。
可以通过运行以下代码来运行测试:
dotnet test
此层通过 VSTest 运行测试,并将其与 VSTest 测试框架适配器级别集成。
dotnet test
- Microsoft.Testing.Platform 模式
默认情况下,VSTest 用于运行 Microsoft.Testing.Platform
测试。 可以通过在项目文件中指定 <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
设置来启用完全 Microsoft.Testing.Platform
。 此设置将禁用 VSTest,并且由于 Microsoft.Testing.Platform.MSBuild NuGet 包的可传递依赖项,可以直接运行解决方案中所有 Microsoft.Testing.Platform
授权的测试项目。 如果通过直接的 Microsoft.Testing.Platform
测试项目,它将无缝运行。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<!-- Add this to your project file. -->
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
</PropertyGroup>
<!-- ... -->
</Project>
在此模式下,可以通过以下方式之一提供用于调用测试应用程序的额外参数:
Microsoft.Testing.Platform
从版本 1.4(MSTest 版本 3.6 随附)开始,可以在命令行上的双划线--
后面添加选项:dotnet test -- --minimum-expected-tests 10
在命令行上使用
TestingPlatformCommandLineArguments
MSBuild 属性:dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
或者在项目文件中:
<PropertyGroup> ... <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments> </PropertyGroup>
其他 MSBuild 选项
MSBuild 集成提供可在项目文件中或通过命令行上的全局属性指定的选项,例如 -p:TestingPlatformShowTestsFailure=true
。
这些可用选项为:
显示每个测试的失败
默认情况下,测试失败将汇总到 .log 文件中,每个测试项目的单个失败都会报告给 MSBuild。
要显示每个失败测试的错误,请在命令行中指定 -p:TestingPlatformShowTestsFailure=true
,或将 <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
属性添加到项目文件中。
在命令行上:
dotnet test -p:TestingPlatformShowTestsFailure=true
或在项目文件中:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
</PropertyGroup>
<!-- ... -->
</Project>
显示完整的平台输出
默认情况下,基础测试可执行文件写入的所有控制台输出都会被捕获并对用户隐藏。 其中包括横幅、版本信息和格式化测试信息。
若要将此信息与 MSBuild 输出一起显示,请使用 <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
。
此选项不会影响测试框架捕获 Console.WriteLine
写入的用户输出的方式或写入控制台的其他类似方式。
在命令行上:
dotnet test -p:TestingPlatformCaptureOutput=false
或在项目文件中:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!-- Add this to your project file. -->
<TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>
</PropertyGroup>
<!-- ... -->
</Project>