使用測試總管執行單元測試

適用于:是Visual Studio否Visual Studio for Mac否Visual Studio Code

使用 [測試總管] 從 Visual Studio 或協力廠商單元測試專案中執行單元測試。 您也可以使用 [測試總管] 將測試分組成分類、篩選測試清單,以及建立、儲存和執行測試播放清單。 您也可以使用測試總管來偵錯單元測試,並在Visual Studio Enterprise中分析程式碼涵蓋範圍

測試總 管可以從方案中的多個測試專案,以及屬於生產程式碼專案的測試類別執行測試。 測試專案可以使用不同的單元測試架構。 當進行測試的程式碼是為 .NET 撰寫時,測試專案可以用任何同樣以 .NET 為目標的語言撰寫,而不管目標程式碼的語言為何。 原生 C/C++ 程式碼專案必須使用 C++ 單元測試架構進行測試。

建置測試專案

如果您尚未在 Visual Studio 方案中設定測試專案,您必須先建立並建置測試專案。

Visual Studio 2015 包含 Managed 程式碼和機器碼皆適用的 Microsoft 單元測試架構。 不過,測試總管也可以執行任何已實作測試總管配接器的單元測試架構。 如需安裝協力廠商單元測試架構的詳細資訊,請參閱安裝協力廠商單元測試架構

在 [測試總管] 中執行測試

在建置測試專案後,這些測試便會出現在 [測試總管] 中。 如果看不到 [測試總管],請選擇 Visual Studio 功能表上的 [測試],選擇 [Windows],然後選擇 [測試總管] (或按Ctrl + ET) 。

測試總管

測試總管

當您執行、撰寫及重新執行測試時,[測試總管] 會將結果顯示在預設的 [專案]、[命名空間] 及 [類別] 群組中。 您可以變更 [測試總管] 將測試分組的方式。

您可以從 [測試總管] 工具列,執行尋找、組織及執行測試等許多工作。

從 [測試總管] 的工具列執行測試

從 [測試總管] 的工具列執行測試

執行測試

您可以執行方案中的所有測試、群組中的所有測試,或是您選取的一組測試。 執行下列其中一個動作:

  • 若要在方案中執行所有測試,請選擇 [全部執行] 圖示 (或按Ctrl + RV) 。

  • 若要執行預設群組中的所有測試,請選擇 [執行] 圖示,然後在功能表上選擇該群組。

  • 選取您想要執行的個別測試,開啟所選測試的按一下滑鼠右鍵功能表,然後選擇 [執行選取的測試] (或按Ctrl + RT) 。

  • 如果個別測試沒有任何會防止它們依任意順序執行的相依性,請使用工具列的設定功能表開啟平行測試執行。 這可大幅縮短執行所有測試所需的時間。

每次建置後執行測試

若要在每次進行本機建置之後執行單元測試,請開啟 [測試總管] 中的設定圖示,然後選取 [建置之後執行測試]

檢視測試結果

當您執行、寫入、重新執行您的測試時,測試總管會顯示 [失敗的測試] 、[通過的測試] 、[略過的測試] 和 [未執行的測試] 群組中的結果。 在 [測試總管] 底部或一側的詳細資料窗格會顯示測試回合的摘要。

檢視測試詳細資料

若要檢視個別測試的詳細資料,請選取該測試。

測試執行詳細資料

測試執行詳細資料

測試詳細資料窗格會顯示下列資訊:

  • 測試方法的原始檔案名稱和行號。

  • 測試的狀態。

  • 測試方法執行的經過時間。

如果測試失敗,詳細資料窗格也會顯示:

  • 測試的單元測試架構所傳回的訊息。

  • 測試失敗時的堆疊追蹤。

檢視測試方法的原始程式碼

若要在 Visual Studio 編輯器中顯示測試方法的原始程式碼,請選取測試,然後在右鍵功能表上選擇 [ 開啟測試 ], (或按 F12) 。

群組和篩選測試清單

測試總管可讓您將測試分組到預先定義的分類。 在測試總管中執行的大部分單元測試架構可讓您定義自己的分類和分類/值組來群組您的測試。 您也可以透過比對字串和測試屬性來篩選測試清單。

將測試清單中的測試分組

[測試總管] 可讓您將測試分組至某個階層。 預設的階層群組是 [專案]、[命名空間],然後是 [類別]。 若要變更測試的組織方式,請選擇 [ 依群組]按鈕 [測試總管] 群組按鈕 ,然後選取新的群組準則。

在 [測試總管] 中依分類為測試分組

您可以定義自己的階層層級,然後依您偏好的順序選取 [分組依據] 選項,例如先依 [狀態] 再依 [類別] 進行分組。

Visual Studio 測試總管的螢幕擷取畫面,其中顯示一個窗格中的測試階層,另一個窗格中的 [分組依據] 功能表,其中已核取 [類別] 和 [狀態] 選項。

[測試總管] 可讓您將測試分組至某個階層。 預設的階層群組是 [專案]、[命名空間],然後是 [類別]。 若要變更測試的組織方式,請選擇 [ 依群組]按鈕 [測試總管] 群組按鈕 ,然後選取新的群組準則。

在 [測試總管] 中依分類為測試分組

您可以定義自己的階層層級,然後依您偏好的順序選取 [分組依據] 選項,例如先依 [狀態] 再依 [類別] 進行分組。

Visual Studio 測試總管的螢幕擷取畫面,其中顯示一個窗格中的測試階層,另一個窗格中的 [分組依據] 功能表,其中已核取 [類別] 和 [狀態] 選項。

測試總管群組

群組 描述
有效期間 依執行時間分組測試:快速慢。
State 依執行結果分組測試:失敗的測試略過的測試通過的測試未執行的測試
目標 Framework 依其專案的目標架構將測試分組
Namespace 依上層命名空間將測試分組。
專案 依上層專案將測試分組。
類別 依上層類別將測試分組。

特性

特性通常是分類名稱/值組,但也可以是單一分類。 您可將特性指派給方法,其中單元測試架構可將其識別為測試方法。 單元測試架構可以定義特性分類。 您可以將值加入特性分類以定義自己的分類名稱/值組。 指定特性分類和值的語法是由單元測試架構所定義。

Microsoft Managed 程式碼單元測試架構中的特性

在受控應用程式的 Microsoft 單元測試架構中,您會在 屬性中 TestPropertyAttribute 定義特性名稱/值組。 測試架構也包含下列預先定義的特性:

特徵 描述
OwnerAttribute 擁有者分類是由單元測試架構所定義,會要求您提供擁有者的字串值。
PriorityAttribute 優先權分類是由單元測試架構所定義,會要求您提供優先權的整數值。
TestCategoryAttribute TestCategory 屬性可讓您指定單元測試的類別。
TestPropertyAttribute TestProperty 屬性可讓您定義特性分類/值組。

Microsoft C++ 單元測試架構中的特性

請參閱如何使用適用於 C++ 的 Microsoft 單元測試架構

建立自訂播放清單

您可以建立和儲存想要執行或檢視為群組的測試清單。 當您選取播放清單時,清單中的測試會顯示在新的 [測試總管] 索引標籤中。您可以將測試新增至多個播放清單。

若要建立播放清單,請在測試總管中選擇一或多項測試。 在滑鼠右鍵功能表上,選擇 [新增至播放清單] [新增播放清單> ]。

建立播放清單

播放清單會在新的 [測試總管] 索引標籤中開啟。您可以使用此播放清單一次,然後捨棄它,或按一下播放清單視窗中的 [ 儲存 ] 按鈕,然後選取名稱與位置以儲存播放清單。

播放清單會在個別的測試總管索引標籤中開啟

若要建立播放清單,請在測試總管中選擇一或多項測試。 以滑鼠右鍵按一下 ,然後選擇 [新增至播放清單] [新增播放清單> ]。

若要開啟播放清單,選擇 Visual Studio 工具列中的播放清單圖是,然後從功能表中選取先前儲存的播放清單檔案。

若要編輯播放清單,您可以以滑鼠右鍵按一下任何測試,並使用功能表選項來新增或移除播放清單。

從 Visual Studio 2019 16.7 版開始,您可以選擇工具列中的 [ 編輯 ] 按鈕。 您的測試旁邊會顯示覆選框,其中顯示播放清單中包含和排除哪些測試。 視需要編輯群組。

[編輯播放清單] 按鈕

您也可以核取或取消核取階層中父群組的方塊。 此動作會建立動態播放清單,一律根據該群組中的測試來更新播放清單。 例如,如果您在類別旁邊放置核取記號,則從該類別新增的任何測試都會成為此播放清單的一部分。 如果您從該類別刪除測試,則會從播放清單中移除它。 您可以使用工具列中的 [儲存] 按鈕來儲存播放清單,然後開啟磁片上建立的 .playlist 檔案,以深入瞭解規則。 此檔案會列出組成播放清單的所有規則和個別測試。

播放清單 xml 檔案

如果您想要建立特性的播放清單,請使用下列 MSTest 格式。

<Playlist Version="2.0">
	<Rule Name="Includes" Match="Any">
		<Property Name="Trait" Value="SchemaUpdateBasic" />
	</Rule>
</Playlist>

使用下列 xUnit 格式。 請確定您的 TestCategory 名稱和 [Value] 之間有空格。

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Rule Match="All">
      <Property Name="Solution" />
        <Rule Match="Any">
            <Property Name="Trait" Value="TestCategory [Value]" />
	    </Rule>
	</Rule>
  </Rule>
</Playlist>

您可以建立和儲存想要執行或檢視為群組的測試清單。 當您選取播放清單時,清單中的測試會顯示在新的 [測試總管] 索引標籤中。您可以將測試新增至多個播放清單。

若要建立播放清單,請在測試總管中選擇一或多項測試。 在滑鼠右鍵功能表上,選擇 [新增至播放清單] [新增播放清單> ]。

建立播放清單

播放清單會在新的 [測試總管] 索引標籤中開啟。您可以使用此播放清單一次,然後捨棄它,或按一下播放清單視窗中的 [ 儲存 ] 按鈕,然後選取名稱與位置以儲存播放清單。

播放清單會在個別的測試總管索引標籤中開啟

若要建立播放清單,請在測試總管中選擇一或多項測試。 以滑鼠右鍵按一下 ,然後選擇 [新增至播放清單] [新增播放清單> ]。

若要開啟播放清單,選擇 Visual Studio 工具列中的播放清單圖是,然後從功能表中選取先前儲存的播放清單檔案。

若要編輯播放清單,您可以以滑鼠右鍵按一下任何測試,並使用功能表選項來新增或移除播放清單。

從 Visual Studio 2019 16.7 版開始,您可以選擇工具列中的 [ 編輯 ] 按鈕。 您的測試旁邊會顯示覆選框,其中顯示播放清單中包含和排除哪些測試。 視需要編輯群組。

[編輯播放清單] 按鈕

您也可以核取或取消核取階層中父群組的方塊。 此動作會建立動態播放清單,一律根據該群組中的測試來更新播放清單。 例如,如果您在類別旁邊放置核取記號,則從該類別新增的任何測試都會成為此播放清單的一部分。 如果您從該類別刪除測試,則會從播放清單中移除它。 您可以使用工具列中的 [儲存] 按鈕來儲存播放清單,然後開啟磁片上建立的 .playlist 檔案,以深入瞭解規則。 此檔案會列出組成播放清單的所有規則和個別測試。

播放清單 xml 檔案

如果您想要建立特性的播放清單,請使用下列 MSTest 格式。

<Playlist Version="2.0">
	<Rule Name="Includes" Match="Any">
		<Property Name="Trait" Value="SchemaUpdateBasic" />
	</Rule>
</Playlist>

使用下列 xUnit 格式。 請確定您的 TestCategory 名稱和 [Value] 之間有空格。

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Rule Match="All">
      <Property Name="Solution" />
        <Rule Match="Any">
            <Property Name="Trait" Value="TestCategory [Value]" />
	    </Rule>
	</Rule>
  </Rule>
</Playlist>

測試總管資料行

群組 在 [測試總管] 中也與 [特性]、[堆疊追蹤]、[錯誤訊息] 及 [完整名稱] 一起可供作為資料行。 大多數資料行預設並不可見,而您可以自訂要看見的資料行及其顯示順序。

Visual Studio 測試總管的螢幕擷取畫面,其中顯示已選取 [資料行] 的功能表,以及已選取 [持續時間]、[特性] 和 [錯誤訊息] 的子功能表。

篩選、排序及重新排列測試資料行

您可以篩選、排序及重新排列資料行。

  • 若要篩選成特定特性,請按一下 [特性] 資料行頂端的篩選圖示。

    資料行篩選

  • 若要變更資料行的順序,請按一下資料行標頭,然後將其向左或右拖曳。

  • 若要排序資料行,請按一下資料行標頭。 並非所有資料行都可以進行排序。 您也可以按住 Shift 鍵,然後按一下其他的資料行標頭,依次要資料行進行排序。

    資料行排序

測試總管資料行

群組 在 [測試總管] 中也與 [特性]、[堆疊追蹤]、[錯誤訊息] 及 [完整名稱] 一起可供作為資料行。 大多數資料行預設並不可見,而您可以自訂要看見的資料行及其顯示順序。

Visual Studio 測試總管的螢幕擷取畫面,其中顯示已選取 [資料行] 的功能表,以及已選取 [持續時間]、[特性] 和 [錯誤訊息] 的子功能表。

篩選、排序及重新排列測試資料行

您可以篩選、排序及重新排列資料行。

  • 若要篩選成特定特性,請按一下 [特性] 資料行頂端的篩選圖示。

    資料行篩選

  • 若要變更資料行的順序,請按一下資料行標頭,然後將其向左或右拖曳。

  • 若要排序資料行,請按一下資料行標頭。 並非所有資料行都可以進行排序。 您也可以按住 Shift 鍵,然後按一下其他的資料行標頭,依次要資料行進行排序。

    資料行排序

搜尋和篩選測試清單

您也可以使用 [測試總管] 搜尋篩選,以限制您檢視和執行之專案中的測試方法。

當您在 [測試總管] 的搜尋方塊鍵入字串並選擇 Enter 時,會將測試清單篩選為只顯示包含該字串之完整名稱的測試。

若要依據不同準則篩選:

  1. 開啟搜尋方塊右邊的下拉式清單。

  2. 選擇新的準則。

  3. 在引號之間輸入篩選值。 如果您想要搜尋完全相符的字串,而不是包含的相符項目,請使用等號 (=),而不是冒號 (:)。

在 [測試總管] 中篩選測試

在 [測試總管] 中篩選測試

注意

搜尋是區分大小寫且比對指定字串與準則值的任何部分。

Qualifier 描述
State 在測試總管分類名稱中搜尋相符項目:[失敗的測試] 、[略過的測試] 、[成功的測試]
特性 在特性分類和值中搜尋相符項目。 指定特性分類和值的語法是由單元測試架構所定義。
完整名稱 在測試命名空間、類別和方法的完整名稱中搜尋相符項目。
專案 在測試專案名稱中搜尋相符項目。
目標 Framework 搜尋測試架構中的相符專案。
Namespace 在測試命名空間中搜尋相符項目。
類別 在測試類別名稱中搜尋相符項目。

若要排除篩部分選條件的結果,請使用下列語法:

FilterName:"Criteria" -FilterName:"SubsetCriteria"

例如,FullName:"MyClass" - FullName:"PerfTest" 傳回名稱包含 "MyClass" 的所有測試,但排除名稱中也包含 "PerfTest" 的測試。

分析單元測試程式碼涵蓋範圍

您可以使用 Visual Studio Enterprise 版中提供的 Visual Studio 程式碼涵蓋範圍工具,來判斷您的單元測試實際測試的產品程式碼數量。 您可以在方案中的所選測試或所有測試上執行程式碼涵蓋範圍。

若要在方案中執行測試方法的程式碼涵蓋範圍:

  • 在 [測試總管] 中按一下滑鼠右鍵,然後 選取 [分析所選測試的程式碼涵蓋範圍]

[程式碼涵蓋範圍結果] 視窗會顯示線條、函式、類別、命名空間及模組所運用的產品程式碼區塊的百分比。

如需詳細資訊,請參閱使用程式碼涵蓋範圍來決定所測試的程式碼數量

測試快速鍵

在測試的程式碼編輯器中按一下滑鼠右鍵,然後選取 [ 執行測試 ],或使用 Visual Studio 中的預設 [測試總管 ] 快捷方式 ,即可從 [測試總管] 執行測試。 部分快速鍵是以內容為基礎。 這表示它們會根據游標在程式碼編輯器中的位置執行或 偵錯測試 。 如果游標在測試方法內,則該測試方法便會執行。 如果游標是在類別層級,則該類別中的所有測試便會執行。 對於命名空間層級也是如此。

常見命令 鍵盤快速鍵
TestExplorer.DebugAllTestsInContext Ctrl+RCtrl+T
TestExplorer.RunAllTestsInContext Ctrl+RT
TestExplorer.RunAllTests Ctrl+RA
TestExplorer.RepeatLastRun Ctrl+RL

注意

您不能在抽象類別中執行測試,因為測試只定義於抽象類別,而不會具現化。 若要在抽象類別執行測試,請建立衍生自抽象類別的類別。

測試音訊提示

測試總管可以在測試回合完成時播放音效。 有兩個音效:一個音效表示測試回合成功,且所有通過的測試都成功,而第二個音效則表示測試回合已完成,且至少有一個失敗的測試。 您可以在預設Windows 11音效對話方塊中設定這些音效。 此功能可從 Visual Studio 2019 Update 16.9 Preview 3 開始提供。

  1. 開啟預設Windows 11音效對話方塊。
  2. 流覽至 [ 音效] 索引 標籤。
  3. 尋找 Microsoft Visual Studio 類別。 選擇 [測試回合成功 ] 或 [ 測試回合失敗 ] 音效,以選取預設音效或流覽至您自己的音訊檔案。
    Windows 11音效對話方塊

另請參閱