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.dllmytestproject.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 版本。
範例值為 Framework35Framework40Framework45FrameworkUap10.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