VSTest.Console.exe 命令行选项

VSTest.Console.exe 是用于运行测试的命令行工具。 可在命令行上按任意顺序指定多个选项。 这些选项在常规命令行选项中列出。

注意

Visual Studio 中的 MSTest 适配器在旧模式下仍有效(等效于使用 mstest.exe 运行测试),可实现兼容性。 在旧模式下,它无法利用 TestCaseFilter 功能。 在以下情况下,适配器可以切换到旧模式:指定 .testsettings 文件、在 .runsettings 文件中将 forcelegacymode 设置为 true 或使用 HostType 等特性 。

若要在基于 ARM 架构的计算机上运行自动测试,则必须使用 VSTest.Console.exe。

打开开发人员命令提示以使用命令行工具,或者可在 %Program Files(x86)%\Microsoft Visual Studio\<version>\<edition>\common7\ide\CommonExtensions\<Platform | Microsoft> 中找到该工具。

常规命令行选项

下表列出了 VSTest.Console.exe 的所有选项以及对应的简短说明。 在命令行上键入 VSTest.Console/? 可以看到类似的摘要。

选项 描述
[测试文件] 从指定文件运行测试。 用空格分隔多个测试文件名。
示例:mytestproject.dllmytestproject.dll myothertestproject.exe
/Settings:[文件名] 使用其他设置(如数据收集器)运行测试。 有关详细信息,请参阅使用 .runsettings 文件配置单元测试
示例:/Settings:local.runsettings
/Tests:[测试名] 运行其名称包含提供的值的测试。 此命令与完整测试名称(包括命名空间)匹配。 若要提供多个值,请使用逗号将这些值分隔。
示例:/Tests:TestMethod1,testMethod2
/Tests 命令行选项不能与 /TestCaseFilter 命令行选项一起使用 。
/Parallel 指定并行执行的测试。 默认情况下,最多可使用计算机上的所有可用内核。 可在设置文件中配置要使用的内核数。
/Enablecodecoverage 在测试运行中启用数据诊断适配器 CodeCoverage。
如果未使用设置文件指定设置,则将使用默认设置。
/InIsolation 在隔离的进程中运行测试。
这种隔离使 vstest.console.exe 进程不太可能在测试出错时停止,但测试的运行速度可能较慢。
/UseVsixExtensions 此选项使 vstest.console.exe 进程使用或跳过在测试运行中安装的 VSIX 扩展(如果有)。
此选项已弃用。 从 Visual Studio 的下一个主版本开始,此选项可能会删除。 转为作为 NuGet 包提供的使用扩展。
示例:/UseVsixExtensions:true
/TestAdapterPath:[路径] 强制 vstest.console.exe 进程使用测试运行中指定路径(如果有)内的自定义测试适配器。
示例:/TestAdapterPath:[pathToCustomAdapters]
/Platform:[平台类型] 强制使用给定的平台,而不是根据当前运行时确定的平台。 在 Windows 上,此选项强制只能使用 x86 和 x64 平台。 ARM 选项会中断,并将导致大多数系统上使用 x64。
若要在有效值(例如 ARM64)的列表中未列出的运行时上运行,请勿指定此选项。
有效值为 x86、x64 和 ARM。
/Framework: [Framework 版本] 要用于执行测试的目标 .NET 版本。
示例值有 Framework35Framework40Framework45FrameworkUap10.NETCoreApp,Version=v1.1
TargetFrameworkAttribute 用于从程序集中自动检测此选项,并在属性不存在时默认为 Framework40。 如果从 .NET Core 程序集删除 TargetFrameworkAttribute,则必须显式指定此选项。
如果将目标框架指定为 Framework35,则测试在 CLR 4.0“兼容模式”下运行。
示例:/Framework:framework40
/TestCaseFilter:[表达式] 运行与给定表达式匹配的测试。
<Expression> 的格式为 <property>=<value>[|<Expression>]。
示例:/TestCaseFilter:"Priority=1"
示例:/TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"
/TestCaseFilter 命令行选项不能与 /Tests 命令行选项一起使用 。
有关创建和使用表达式的信息,请参阅 TestCase 筛选
/? 显示使用情况信息。
/Logger:[uri/friendlyname] 为测试结果指定一个记录器。 多次指定参数,以启用多个记录器。
示例:要将结果记录到 Visual Studio 测试结果文件 (TRX),请使用
/Logger:trx
[;LogFileName=<默认为唯一文件名>]
/ListTests:[文件名] 列出给定测试容器中的已发现的测试。
注意:列出测试时,此选项 /TestCaseFilters 不起作用;它仅控制运行哪些测试。
/ListDiscoverers 列出已安装的测试发现器。
/ListExecutors 列出已安装的测试执行器。
/ListLoggers 列出已安装的测试记录器。
/ListSettingsProviders 列出已安装的测试设置提供程序。
/Blame 在意见模式中运行测试。 此选项有助于隔离导致测试主机出现故障的有问题的测试。 检测到故障时,它会在 TestResults/<Guid>/<Guid>_Sequence.xml 中创建一个序列文件,用于捕获在出现故障之前运行的测试的顺序。 有关详细信息,请参阅意见数据收集器
/Diag:[文件名] 将诊断跟踪日志写入指定文件。
/ResultsDirectory:[path] 如果不存在,则将在指定路径中创建测试结果目录。
示例:/ResultsDirectory:<pathToResultsDirectory>
/ParentProcessId:[parentProcessId] 负责启动当前进程的父进程的进程 ID。
/Port:[port] 套接字连接和接收事件消息的端口。
/Collect:[dataCollector friendlyName] 为测试运行启用数据收集器。 详细信息

提示

选项和值不区分大小写。

示例

运行 vstest.console.exe 的语法如下:

vstest.console.exe [TestFileNames] [Options]

默认情况下,该命令在正常退出时返回 0,即使未发现任何测试也是如此。 如果要在未发现测试的情况下返回非零值,请使用 <TreatNoTestsAsError>true</TreatNoTestsAsError> runsettings 选项。

以下命令针对测试库 myTestProject.dll 运行 vstest.console.exe :

vstest.console.exe myTestProject.dll

以下命令运行具有多个测试文件的 vstest.console.exe。 用空格分隔测试文件名:

vstest.console.exe myTestFile.dll myOtherTestFile.dll

以下命令运行具有多个选项的 vstest.console.exe。 它在隔离进程中的 myTestFile.dll 文件中运行测试,同时使用 Local.RunSettings 文件中指定的设置 。 此外,它仅运行标记为“Priority=1”的测试,并将结果记录到 .trx 文件中。

vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx

以下命令针对测试库 myTestProject.dll 运行具有 /blame 选项的 vstest.console.exe :

vstest.console.exe myTestFile.dll /blame

如果测试主机崩溃了,则会生成 sequence.xml 文件。 此文件包含按顺序执行的测试的完全限定名称,其中包括在崩溃时正在运行的具体测试。

如果测试主机没有崩溃,则不会生成 sequence.xml 文件。

生成的 sequence.xml 文件示例:

<?xml version="1.0"?>
<TestSequence>
  <Test Name="TestProject.UnitTest1.TestMethodB" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
  <Test Name="TestProject.UnitTest1.TestMethodA" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
</TestSequence>

UWP 示例

对于 UWP,必须引用 appxrecipe 文件而不是 DLL。

vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe