MSTest.exe 命令列選項
MSTest.exe 是用於執行測試的命令列命令。 這個命令有許多選項,可以讓您自訂測試回合。 這些選項中有許多都能和其他選項合併使用。事實上,某些選項一定得和其他選項一起使用,如下列章節所述。 在 MSTest.exe 命令列上,可指定這些選項以任何順序出現。
MSTest.exe 解譯選項及選項值時並不區分大小寫。
下表列出了 MSTest.exe 的所有選項,以及選項的簡短描述。 在命令列輸入 MSTest /h 也能看到類似的摘要。
一般命令列選項
/testcontainer:[file name] |
載入內含測試的檔案。 範例:/testcontainer:tests.dll 如需詳細資訊,請參閱 /testcontainer。 |
/testmetadata:[file name] |
載入內含測試中繼資料的檔案。 如需詳細資訊,請參閱 /testmetadata。 |
/testlist:[test list path] |
指定要執行的測試清單 (於中繼資料檔內指定)。 如需詳細資訊,請參閱 /testlist。 |
/category:[test category filter] |
指定並篩選要執行的測試分類。 如需詳細資訊,請參閱 /category。 |
/test:[test name] |
指定要執行的測試名稱。 如需詳細資訊,請參閱 /test。 |
/noisolation |
在 MSTest.exe 處理序內執行測試。 選擇執行這項工作會提升測試回合的速度,但是會增加 MSTest.exe 處理序的風險。 |
/testsettings: [file name] |
使用指定的測試設定檔。 範例:/testsettings:Local.Testsettings 如需詳細資訊,請參閱 /testsettings。 |
/runconfig:[file name] |
使用指定的執行組態檔。 範例:/runconfig:localtestrun.Testrunconfig 如需詳細資訊,請參閱 /runconfig。
注意事項
提供此命令列選項的目的是為了達到舊版 Microsoft Visual Studio 2010 的相容性。測試回合組態已由 Visual Studio 2010 Ultimate 中的測試設定所取代。
|
/resultsfile:[file name] |
將測試回合結果儲存到指定的檔案中。 範例:/resultsfile:testResults.trx 如需詳細資訊,請參閱 /resultsfile。 |
/unique |
只有在指定的 /test 能找到唯一相符的結果時,才執行測試。 如需詳細資訊,請參閱 /unique。 |
/detail:[property id] |
指定除了測試結果之外,您還想顯示其值的屬性名稱 (如果有的話)。 如需詳細資訊,請參閱 /detail。 |
/help |
顯示 MSTest.exe 使用方式訊息 (簡短形式:/? 或 /h)。 |
/nologo |
不顯示程式啟始資訊及著作權訊息。 |
/usestderr |
使用標準錯誤來輸出錯誤資訊。 |
發行測試結果的命令列選項
如需這些選項的詳細資訊,請參閱發行測試結果的命令列選項。
/publish:[server name] |
將結果發行至指定之伺服器 Team 專案集合的資料庫。 |
/publishresultsfile:[file name] |
指定要發行的結果檔檔案名稱。 若未指定結果檔名,則使用目前回合所產生的檔案。 |
/publishbuild:[build id] |
使用這個組建 ID 發行測試結果。 |
/teamproject:[team project name] |
指定這個組建所屬之 Team 專案的名稱。 |
/platform:[platform] |
指定要發行其測試結果之組建的平台。 |
/flavor:[flavor] |
指定要發行其測試結果之組建的類別。 |
使用 MSTest 選項
下列章節將詳細描述 MSTest.exe 的許多選項。 此處並不包括發行測試結果所用的選項。 如需那些選項的詳細資訊,請參閱發行測試結果的命令列選項。
/testcontainer
/testcontainer:[file name]
測試容器是一個包含您想執行之測試的檔案。 例如,如果是已排序的測試,測試容器即為定義已排序測試的 .orderedtest 檔案。 如果是單元測試,它便是從內含單元測試原始碼檔案之測試專案所建置的組件。
注意事項 |
---|
如果是單元測試,這則是內含測試程式碼 (而非您正測試的應用程式程式碼) 的組件。 例如,如果您的方案中含有名為 BankAccount 的專案和對應的測試專案 BankAccountTest,請指定 /testcontainer:BankAccountTest.dll。 |
注意事項 |
---|
測試中繼資料檔案也會列出可以執行的測試,因此您不能在單一命令列上同時指定 /testcontainer 和 /testmetadata 選項。 這麼做會造成混淆並產生錯誤。 |
/testmetadata
/testmetadata:[file name]
您可以使用 /testmetadata 選項,執行不同測試容器中的測試。
使用 [測試清單編輯器] 視窗建立測試清單時,將會建立方案的測試中繼資料檔。 這個檔案包含 [測試清單編輯器] 視窗所列之所有測試的詳細資訊, 這些即為您方案中所有測試專案內的所有測試。
測試中繼資料檔是在方案資料夾中所建立的 XML 檔案。 這個檔案會顯示在方案總管的 [方案項目] 節點底下。 測試中繼資料檔案具有副檔名 .vsmdi,且與 [測試清單編輯器] 視窗相關聯。 也就是說,如果您在 [Windows 檔案總管] 中按兩下 .vsmdi 檔案,它便會開啟 Visual Studio 及其內容。 方案之測試專案中的所有測試,都會顯示在 [測試清單編輯器] 視窗中。
只有進行反映在 [測試清單編輯器] 視窗中的變更 (例如建立或刪除測試,或是變更測試的屬性) 時,才能變更測試中繼資料檔。
注意事項 |
---|
由於測試容器含有您能執行的測試,因此您不能在單一命令列上同時指定 /testcontainer 和 /testmetadata 選項。 這麼做會造成混淆並產生錯誤。 |
當您使用 /testmetadata 選項時,建議您利用 /test 選項或 /testlist 選項 (或是兩者都使用) 指定要執行的特定測試。
/testlist
/testlist:[test list path]
/testlist 選項會列出要執行的測試清單 (在測試中繼資料檔指定)。 若要執行位於數個測試清單中的測試,請使用 /testlist 選項數次。 測試清單中任何已排序的測試便會執行。
注意事項 |
---|
使用 /testlist 選項時,必須同時使用 /testmetadata 選項。 |
您可以同時使用 /testlist 選項和 /test 選項。 其效果和在 [測試清單編輯器] 視窗中選取一份測試清單,並選取一或多項個別測試,然後按一下 [執行測試] 相同。
/category
/category:[test category filter]
使用 /category 選項可以指定要執行的測試分類。
注意事項 |
---|
您必須使用 /testcontainer 選項,才可以使用 /category 選項。 |
每個命令列只能使用 /category 選項一次,但是您可以利用測試分類篩選條件來指定多個測試分類。 測試分類篩選條件包括由邏輯運算子 '&'、'|'、'!'、'&!' 分隔的一個或多個測試分類名稱。 邏輯運算子 '&' 和 '|' 無法一起用來建立測試分類篩選條件。
例如:
/category:group1 會執行測試分類 "group1" 中的測試。
/category:"group1&group2" 會執行同時位於測試分類 "group1" 和 "group2" 中的測試。將不會執行僅位於其中一個所指定測試分類中的測試。
/category:"group1|group2" 會執行位於測試分類 "group1" 或 "group2" 中的測試。 同時位於兩個測試分類中的測試也將被執行。
/category:"group1&!group2" 會執行來自測試分類 "group1" 而不在測試分類 "group2" 中的測試。將不會執行同時位於測試分類 "group1" 和 "group2" 中的測試。
注意事項 如果您的篩選條件由單一分類 (例如,/category:group1) 組成,則您不必將篩選條件加上引號。 然而,如果您的篩選條件參考多個分類 (例如,/category:"group1&group2"),則必須將篩選條件加上引號。
/test
/test:[test name]
使用 /test 選項可以指定個別測試來執行。 若要執行數個測試,請使用 /test 選項數次。
注意事項 |
---|
您可以使用 /test 選項加上 /testcontainer 選項或 /testmetadata 選項,但不能兩個都加。 |
您可以同時使用 /testlist 選項和 /test 選項。 其效果和在 [測試清單編輯器] 視窗中選取一份測試清單,並選取一或多項個別測試,然後按一下 [執行測試] 相同。
利用 /test 選項指定的字串,會和測試容器或測試中繼資料檔中測試的名稱做比對。 這表示您可以利用單一個 /test 的值指定數個測試。 例如,指定 /test:ittest 會產生與名為 DebitTest 和 CreditTest 之測試相符的項目,因為這兩個測試名稱都含有子字串 'ittest'。
注意事項 |
---|
您利用 /test 選項所指定的值不只會針對測試名稱做測試,也會針對測試的路徑做測試,如在 [方案總管] 中所見;如果是單元測試,則會針對其完整名稱做測試。 |
以下是兩個使用方式的範例:
單元測試範例:TestProject2 專案的 UnitTest1.cs 檔案含有名為 TestMethod1 的單元測試。 將 /test 選項的值指定為 'ittest' 也會和這個測試相符,因為此字串會針對完整名稱 "TestProject2.UnitTest1.TestMethod1" 做測試,'ittest' 字串也會出現在 'UnitTest1' 中。
一般測試範例:下列命令列會執行指定的一般測試,並在測試結果中顯示測試的完整路徑。
mstest /testcontainer:"C:\Documents and Settings\<user name>\My Documents\Visual Studio\Projects\TestProject2\TestProject2\generictest1.generic" /test:testproject32\generic
/noisolation
/noisolation
使用這個選項可以在 MSTest.exe 處理序內執行測試。 使用此選項並不會導致測試回合組態產生其他變更。 這個選項的目的是要提升測試回合的速度。 不過,它會增加測試回合的整體風險,因為如果測試程式碼擲回未處理的例外狀況 (Exception),可能會導致 MSTest.exe 處理序毀損。
/testsettings
/testsettings:[file name]
使用這個選項指定測試設定檔。 例如:/testsettings:local.Testsettings
您可以利用其他方式指定測試設定檔,例如使用 /testmetadata 選項。 管轄測試設定檔規格的規則將在此處描述。
如果使用 /testsettings 選項,則會使用它所指定的檔案,無論您是否也使用 /testmetadata 選項。
如果您使用 /testmetadata 選項指向一個中繼資料檔 (此檔案指定一個作用中的測試設定檔),且如果您未使用 /testsettings 選項,便會使用該測試設定檔。
如果您未使用 /testsettings 選項,且未在測試中繼資料檔中指定測試設定檔,則測試回合會使用預設的測試設定檔。
注意事項 如需測試設定檔的詳細資訊,請參閱將自動化測試的測試設定建立成測試計劃的一部分。
/runconfig
/runconfig:[file name]
注意:提供此命令列選項的目的是為了達到舊版 Microsoft Visual Studio 2010 的相容性。 測試回合組態已由 Visual Studio 2010 Ultimate 中的測試設定所取代。
使用這個選項指定回合組態檔。 例如:/runconfig:localtestrun.Testrunconfig
您可以利用其他方式指定回合組態檔,例如使用 /testmetadata 選項。 管轄回合組態檔規格的規則將在此處描述。
如果使用 /runconfig 選項,則會使用它所指定的檔案,無論您是否也使用 /testmetadata 選項。
如果您使用 /testmetadata 選項指向一個中繼資料檔 (此檔案指定一個作用中的回合組態檔),且如果您未使用 /runconfig 選項,便會使用該回合組態檔。
如果您未使用 /runconfig 選項,且未在測試中繼資料檔中指定回合組態檔,則測試回合會使用預設的回合組態檔。
/resultsfile
/resultsfile:[file name]
使用這個選項將測試回合結果儲存到具名檔案中。 例如:/resultsfile:testResults.trx。
/unique
/unique
請將 /unique 選項與 /test 選項一併使用。 /unique 選項會指示只有在您使用 /test 選項所提供的值有唯一相符項目時,MSTest.exe 才執行測試。
例如,測試容器 MyTestProject 中含有名為 MethodTest1 及 MethodTest10 的測試。
命令列:
mstest /testcontainer:testproject2.dll /test:MethodTest1
會執行 MethodTest1 和 MethodTest10 這兩個測試,因為 'MethodTest1' 是 'MethodTest10' 的子字串。
但命令列:
mstest /testcontainer:testproject2.dll /test:MethodTest1 /unique
顯示錯誤,表示沒有這個測試名稱的唯一相符項目。 您可以使用測試的 [屬性] 檢視中列出的測試 ID,唯一識別測試名稱。
/usestderr
/usestderr
使用這個選項,會讓下列資訊寫入標準錯誤:
測試的結果為「失敗」、「已中止」、「錯誤」、「逾時」、「無法執行」或「未執行」。
執行層級錯誤。
剖析命令列引數時發生錯誤。
測試回合出現失敗結果時的回合摘要。
不使用此選項時,所有輸出會傳送至標準輸出。
/detail
/detail:[property id]
這個選項可用來顯示額外的測試案例屬性 (如果有的話)。 您可以在單一命令列上傳遞 /detail 選項的多個執行個體,每個執行個體都只具有一個屬性 ID。 /detail 選項的有效屬性 ID 如下:
adapter |
id |
projectrelativepath |
computername |
isautomated |
readonly |
debugtrace |
link |
spoolmessage |
description |
longtext |
stderr |
displaytext |
name |
stdout |
duration |
outcometext |
storage |
errormessage |
owner |
testcategoryid |
errorstacktrace |
parentexecid |
testname |
executionid |
priority |
testtype |
groups |
projectname |
traceinfo |
注意事項 |
---|
可以搭配 /detail 選項使用的屬性 ID,實際可用的選擇視您的測試類型而定。 這個清單列出的只是大約的項目。 尤其是當您使用自訂測試類型時,屬性的選擇更會不同。 若想得知您可以使用哪些 propertyID,請檢查測試回合所產生的測試結果檔案。 如需測試結果檔案的詳細資訊,請參閱 HOW TO:在 Visual Studio 中儲存和開啟測試結果。 |
如果指定的測試案例具有某個屬性,其資訊便會包括在輸出結果摘要中。
例如,命令列:
mstest /testcontainer:Errors.dll /detail:testtype
會產生下列輸出,其中包含測試類型資訊:
...
Results Top Level Tests
-------- -----------------
Inconclusive TestProject2.BankAccountTest.CreditTest
[testtype] = Unit Test
...