VSTest.Console.exe 命令行選項
VSTest.Console.exe 是用來執行測試的命令行工具。 您可以在命令列上依任何順序指定數個選項。 這些選項列在 一般命令行選項。
注意
Visual Studio 中的 MSTest 配接器也適用於舊版模式(相當於使用 mstest.exe執行測試),以取得相容性。 在舊版模式中,它無法利用 TestCaseFilter 功能。 當指定 testsettings 檔案時,適配卡可以切換至舊版模式,forcelegacymode 設定為 truerunsettings 檔案,或使用 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: [framework version] | 要用於測試執行的目標 .NET 版本。 範例值為 Framework35 、Framework40 、Framework45 、FrameworkUap10 .NETCoreApp,Version=v1.1 。TargetFrameworkAttribute 可用來從元件自動偵測這個選項,並且預設為在屬性不存在時 Framework40 。 如果您從 .NET Core 元件中移除 TargetFrameworkAttribute,則必須明確指定此選項。如果目標架構指定為 Framework35,測試會在 CLR 4.0「相容性模式」中執行。 範例: /Framework:framework40 |
/TestCaseFilter:[表示式] | 執行符合指定表達式的測試。 <Expression> 的格式 <屬性>=<值>[|<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:[路徑] | 如果不存在,將會在指定的路徑中建立測試結果目錄。 範例: /ResultsDirectory:<pathToResultsDirectory> |
/ParentProcessId:[parentProcessId] | 負責啟動目前進程之父進程的進程標識碼。 |
/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
選項執行 vstest.console.exemyTestProject.dll:
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