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.dll 、mytestproject.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 版本。 示例值为 Framework35 、Framework40 、Framework45 、FrameworkUap10 、.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