VSTest.Console.exe 命令行选项

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

注意

Visual Studio 中的 MSTest 适配器也适用于旧模式(相当于使用 mstest.exe运行测试),以便兼容。 在旧模式下,它不能利用 TestCaseFilter 功能。 指定 testsettings 文件时,适配器可以切换到旧模式,forcelegacymode 设置为 runsettings 文件中的 true,或使用 HostType等属性。

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

打开 开发人员命令提示符 以使用命令行工具,也可以在 %Program Files(x86)%\Microsoft Visual Studio\<版本>\<版本>\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:[框架版本] 要用于测试执行的 .NET 版本。
示例值为 Framework35Framework40Framework45FrameworkUap10.NETCoreApp,Version=v1.1
TargetFrameworkAttribute 用于自动检测程序集中的此选项,在属性不存在时默认为 Framework40。 如果从 .NET Core 程序集中删除 TargetFrameworkAttribute,则必须显式指定此选项。
如果目标框架指定为 Framework35,则测试在 CLR 4.0“兼容模式”中运行。
示例:/Framework:framework40
/TestCaseFilter:[表达式] 运行与给定表达式匹配的测试。
<表达式> 的格式为 <属性>=<值>[|<表达式>]。
示例:/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:[路径] 如果不存在,将在指定路径中创建测试结果目录。
示例:/ResultsDirectory:<pathToResultsDirectory>
/ParentProcessId:[parentProcessId] 负责启动当前进程的父进程的进程 ID。
/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