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/?
也能看到類似的摘要。
選項 | 描述 |
---|---|
[test file names] | 從指定的檔案執行測試。 以空格分隔多個測試檔案名稱。 範例: mytestproject.dll 、mytestproject.dll myothertestproject.exe |
/Settings:[file name] | 使用像資料收集器之類的其他設定執行測試。 如需詳細資訊,請參閱使用 .runsettings 檔案設定單元測試 範例: /Settings:local.runsettings |
/Tests:[test name] | 執行測試,其名稱包含所提供的值。 此命令會與完整測試名稱 (包括命名空間) 進行比對。 若要提供多個值,請使用逗號來區隔。 範例: /Tests:TestMethod1,testMethod2 /Tests 命令列選項無法與 /TestCaseFilter 命令列選項搭配使用。 |
/Parallel | 指定以平行方式執行測試。 根據預設,最多可以使用電腦上所有可用的核心。 您可以設定要在設定檔中使用的核心數。 |
/Enablecodecoverage | 在測試回合中啟用資料診斷配接器 CodeCoverage。 如果沒有使用設定檔來指定,則使用預設設定。 |
/InIsolation | 在獨立的處理序中執行測試。 這種隔離會降低 vstest.console.exe 處理序在測試中錯誤處停止的可能性,但是測試的速度可能會比較慢。 |
/UseVsixExtensions | 此選項可讓 vstest.console.exe 處理序使用或略過測試回合中已安裝的 VSIX 延伸模組 (若有的話)。 即將淘汰此選項。 從 Visual Studio 的下一個主要版本開始,就可能會移除這個選項。 移至以 NuGet 套件形式提供的取用延伸模組。 範例: /UseVsixExtensions:true |
/TestAdapterPath:[path] | 強制 vstest.console.exe 處理序在測試回合中使用來自指定路徑 (若有的話) 的自訂測試配接器。 範例: /TestAdapterPath:[pathToCustomAdapters] |
/Platform:[platform type] | 強制使用指定的平台,而不是從目前的執行階段決定的平台。 在 Windows 上,此選項只能強制使用 x86 和 x64 平台。 ARM 選項已中止,導致多數系統都使用 x64。 若要在未列於有效值 (例如 ARM64) 清單中的執行階段上執行,請勿指定此選項。 有效值為 x86、x64 和 ARM。 |
/Framework: [framework version] | 要用於測試執行的目標 .NET 版本。 範例值為 Framework35 、Framework40 、Framework45 、FrameworkUap10 、.NETCoreApp,Version=v1.1 。TargetFrameworkAttribute 可自動從您的組件偵測此選項,在屬性不存在時會預設為 Framework40 。 如果您從 .NET Core 組件中移除了 TargetFrameworkAttribute,則必須明確指定此選項。如果目標 Framework 指定為 Framework35,則會在 CLR 4.0 的「相容性模式」中執行測試。 範例: /Framework:framework40 |
/TestCaseFilter:[expression] | 執行符合指定之運算式的測試。 <Expression> 的格式為 <property>=<value>[|<Expression>]。 範例: /TestCaseFilter:"Priority=1" 範例: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName" /TestCaseFilter 命令列選項無法與 /Tests 命令列選項搭配使用。 如需建立和使用運算式的資訊,請參閱 篩選。 |
/? | 顯示使用資訊。 |
/Logger:[uri/friendlyname] | 指定測試結果的記錄器。 多次指定此參數可以啟用多個記錄器。 範例:若要將結果記錄到 Visual Studio 測試結果檔案 (TRX),請使用 /Logger:trx [;LogFileName=<預設為唯一檔案名稱>] |
/ListTests:[file name] | 列出從指定之測試容器探索到的測試。 注意:當列出測試時,此選項 /TestCaseFilters 沒有任何作用;它只會控制要執行的測試。 |
/ListDiscoverers | 列出已安裝的測試探索程式。 |
/ListExecutors | 列出已安裝的測試執行程式。 |
/ListLoggers | 列出已安裝的測試記錄器。 |
/ListSettingsProviders | 列出已安裝的測試設定提供者。 |
/Blame | 在歸責模式下執行測試。 這個選項可協助隔離導致測試主機損毀的問題測試。 偵測到當機時,此選項會在 TestResults/<Guid>/<Guid>_Sequence.xml 中建立序列檔案,以擷取損毀之前執行的測試順序。 如需詳細資訊,請參閱改動者資料收集器。 |
/Diag:[file name] | 將診斷追蹤記錄寫入至指定的檔案。 |
/ResultsDirectory:[path] | 如果測試結果目錄不存在,則會在指定的路徑中建立該目錄。 範例: /ResultsDirectory:<pathToResultsDirectory> |
/ParentProcessId:[parentProcessId] | 父處理序的處理序識別碼,該父處理序負責啟動目前處理序。 |
/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
下列命令會使用 /blame
選項針對測試程式庫 myTestProject.dll 執行 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