共用方式為


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

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

測試總管可以執行方案中多個測試專案的測試,也能執行屬於生產代碼專案的測試類別的測試。 測試專案可以使用各種單元測試架構。 針對 .NET 撰寫測試中的程式代碼時,不論目標程式代碼的語言為何,測試專案都可以以任何同時以 .NET 為目標的語言撰寫。 您必須使用C++單元測試架構來測試原生 C 和C++程式代碼專案。

建置測試專案

如果您尚未在 Visual Studio 方案中設定測試專案,您必須先建立和建置測試專案。 使用這些資源:

Visual Studio 包含適用於受控和原生碼的 Microsoft 單元測試架構。 不過,測試總管也可以執行已實作測試總管配接器的任何單元測試架構。 如需安裝第三方單元測試架構的詳細資訊,請參閱 安裝單元測試架構

在測試總管中執行測試

當您建置測試專案時,測試會出現在 [測試總管] 中。 如果看不到 [測試總管],請選取 Visual Studio 功能表上 [測試],然後選取 [測試總管](或選取 Ctrl+E、T)。

在 [測試總管] 中顯示測試清單的螢幕快照。

在 [測試總管] 中顯示測試清單的螢幕快照。

當您執行、撰寫及重新執行測試時,[測試總管] 會以預設的分組方式顯示結果,包括 ProjectNamespaceClass。 您可以變更測試總管將測試分組的方式。

您可以從 測試總管 工具列執行尋找、組織及執行測試的大部分工作。

螢幕快照,說明從 [測試總管] 工具列執行測試的圖示。

螢幕快照,說明從 [測試總管] 工具列執行測試的圖示。

執行測試

選擇下列其中一個選項來執行測試:

  • 若要在解決方案中執行所有測試,請選取 [全部執行] 圖示(或選取 Ctrl+R、V)。

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

  • 若要執行個別測試,請選取一或多個測試,以滑鼠右鍵單擊窗格上的某個位置,然後選取 [[執行選取的測試](或選取 Ctrl+R、T)。

    如果個別測試沒有任何相依性無法依任何順序執行,請在工具列的 [設定] 功能表上開啟平行測試執行。 此動作可以減少執行所有測試的時間。

注意

若要設定執行單元測試的目標平臺(行程架構),請參閱 設定單元測試的程式架構

在每個組建之後執行測試

若要在每個本機組建之後執行單元測試,請在 [測試總管] 工具列上選取設定圖示,然後選取 [在建置後執行測試]

檢視測試結果

當您執行、撰寫及重新執行測試時,[Test Explorer] 會顯示結果於群組:失敗的測試通過的測試略過的測試,以及 未執行的測試。 測試總覽底部或側邊的詳細窗格會顯示測試運行的摘要。

檢視測試詳細數據

若要檢視個別測試的詳細數據,請選取測試。

測試執行詳細數據的螢幕快照。

測試執行詳細數據的螢幕快照。

測試詳細資料視窗中顯示:

  • 來源檔名和測試方法的行號。

  • 測試的狀態。

  • 測試方法執行所花費的時間。

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

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

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

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

若要在 Visual Studio 編輯器中顯示測試方法的原始碼,請以滑鼠右鍵按兩下測試,然後選取 [開啟測試 (或選取 F12 鍵)。

分組和篩選測試清單

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

將測試清單中的測試分組

[測試總管] 可讓您將測試分組到階層中。 預設階層群組會 ProjectNamespace,然後 Class。 若要變更測試的組織方式,請選取 [群組依據] 按鈕[測試總管] 群組按鈕,然後選取新的群組準則。

螢幕快照,顯示 [測試總管] 中依類別分組測試的選項。

您可以藉由依慣用的順序選取 [群組依據] [群組依據] [狀態],然後 [類別],來定義自己的階層層級。

測試瀏覽器的截圖,其中顯示一個窗格上的測試階層,另一個窗格上的 [群組依據] 功能表,選擇了 [類別] 和 [狀態] 選項。

[測試總管] 可讓您將測試分組到階層中。 預設階層群組會 ProjectNamespace,然後 Class。 若要變更測試的組織方式,請選取 [群組依據] 按鈕[測試總管] 群組按鈕,然後選取新的群組準則。

螢幕快照,顯示 [測試總管] 中依類別分組測試的選項。

您可以藉由依慣用的順序選取 [群組依據] [群組依據] [狀態],然後 [類別],來定義自己的階層層級。

[測試總管] 的螢幕快照,其中顯示一個窗格上的測試階層,另一個窗格上的 [群組依據] 功能表,並已選取 [類別] 和 [狀態] 選項。

測試瀏覽器群組

團體 描述
持續時間 依運行時間分組測試:快速中度慢速
狀態 依執行結果分組測試:失敗的測試略過的測試通過的測試未執行的測試
目標框架 根據其專案所針對的架構來分組測試。
命名空間 依包含的命名空間將測試分組。
Project 依包含的專案將測試分組。
類別 依包含的 類別將測試分組。

特徵

特性通常是類別名稱/值組,但也可以是單一類別。 特性可以分配給單元測試架構識別的測試方法。

單元測試架構可以定義特性類別。 您可以將值新增至特徵類別,以定義您自己的類別名稱/值組。 單元測試架構會定義語法來指定特性類別和值。

受控程式代碼Microsoft單元測試架構中的特性

在適用於 Managed 程式代碼的 Microsoft 單元測試架構中,您會在 TestPropertyAttribute 屬性中定義特性名稱 / 值組。 測試架構也包含這些預先定義的特性:

特徵 描述
OwnerAttribute Owner 類別是由單元測試架構所定義,因此您必須提供擁有者的字串值。
PriorityAttribute Priority 類別是由單元測試架構所定義,因此您必須提供優先順序的整數值。
TestCategoryAttribute TestCategory 屬性可讓您指定單元測試的類別。
TestPropertyAttribute TestProperty 屬性可讓您定義特性類別/值組。

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

請參閱 在 Visual Studio中使用適用於 C++ 的 Microsoft 單元測試架構。

建立自定義播放清單

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

若要建立播放清單:

  1. 在 [測試總管] 中選擇一或多個測試。
  2. 以滑鼠右鍵按下窗格上的某個位置,指向 [新增至播放清單],然後選取 [新增播放清單]

顯示建立播放清單之選取項目的螢幕快照。

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

在單獨的 [測試總管] 索引標籤中開啟播放列表的螢幕截圖。

若要開啟播放清單:

  1. 在 Visual Studio 工具列上,選取播放清單圖示。
  2. 在功能表上,選取先前儲存的播放清單檔案。

若要編輯播放清單,請使用下列其中一個選項:

  • 在任何測試上按滑鼠右鍵,然後使用選單指令將它新增到播放清單或從中移除。

  • 在工具列上,選取 [編輯播放清單] 按鈕。 在您的測試旁邊顯示的複選框指示哪些測試包含在播放清單中,哪些則排除在外。 視需要編輯群組。 此功能始於Visual Studio 2019 16.7版。

    顯示工具列上 [編輯播放清單] 按鈕的螢幕快照。

您也可以選取或清除階層中父群組的方塊。 此動作會建立一個動態播放清單,該播放清單會根據該群組中的測試不斷更新。

例如,如果您選取類別旁的複選框,從該類別新增的任何測試就會成為此播放清單的一部分。 如果您從該班級刪除測試,則會從播放清單中移除。

您可以透過工具列上的 [儲存] 按鈕來深入瞭解規則,接著開啟因儲存播放清單而在磁碟上建立的 .playlist XML 檔案。 此檔案會列出組成播放清單的所有規則和個別測試。

顯示播放清單 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>

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

若要建立播放清單:

  1. 在 [測試總管] 中選擇一或多個測試。
  2. 以滑鼠右鍵按下窗格上的某個位置,指向 新增至播放清單,然後選取 新增播放清單

顯示建立播放清單之選取項目的螢幕快照。

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

顯示在不同的 [測試總管] 索引標籤上開啟播放清單的螢幕快照。

若要開啟播放清單:

  1. 在 Visual Studio 工具列上,選取播放清單圖示。
  2. 在功能表上,選取先前儲存的播放清單檔案。

若要編輯播放清單,請使用下列其中一個選項:

  • 右鍵點擊任何測試,然後使用選單指令將其新增或移除出播放清單。

  • 在工具列上,選取 編輯播放清單 按鈕。 在您的測試旁邊顯示的複選框標示出哪些測試包含在播放清單中,哪些被排除。 視需要編輯群組。 此功能始於Visual Studio 2019 16.7版。

    顯示工具列上 [編輯播放清單] 按鈕的螢幕快照。

您也可以選取或清除階層中父群組的方塊。 此動作會建立一個動態播放清單,該播放清單會根據該群組中的測試不斷更新。

例如,如果您選取類別旁的複選框,從該類別新增的任何測試就會成為此播放清單的一部分。 如果您從該課程中刪除測試,則會從播放清單中移除該測試。

您可以透過工具列上的 [儲存] 按鈕來瞭解更多規則,然後開啟硬碟上建立的 .playlist XML 檔案。 此檔案會列出組成播放清單的所有規則和個別測試。

顯示播放清單 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>

測試瀏覽器欄

群組 也可作為測試總管中的數據行,以及 Traits堆棧追蹤錯誤訊息,以及 完整名稱。 預設不會顯示大部分的欄位。 您可以自訂顯示的欄位。

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

資料列可以篩選、重新排列和排序:

  • 若要篩選至特定特性,請選取 [Traits] 資料行頂端的篩選圖示。

    資料行篩選的螢幕快照。

  • 若要變更數據行的順序,請選取數據行標頭,並將它向左或向右拖曳。

  • 若要排序數據行,請選取數據行標頭。 並非所有數據行都可以排序。 您也可以按住 Shift 鍵並選取另一個欄位標題,以雙重排序。

    列排序的螢幕快照。

測試瀏覽器欄

群組 也可作為測試總管中的數據行,以及 Traits堆棧追蹤錯誤訊息,以及 完整名稱。 預設情況下,大多數欄位都是不可見的。 您可以自訂顯示的欄位。

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

資料列可以篩選、重新排列和排序:

  • 若要篩選至特定特性,請選取 [Traits] 資料行頂端的篩選圖示。

    資料行篩選的螢幕快照。

  • 若要變更數據行的順序,請選取數據行標頭,並將它向左或向右拖曳。

  • 若要排序數據行,請選取數據行標頭。 並非所有數據行都可以排序。 您也可以藉由按住 Shift 鍵,然後選取另一個欄標題,來依照次要欄進行排序。

    欄位排序的螢幕快照。

搜尋和篩選測試清單

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

當您在 [測試總管] 搜尋方塊中輸入字串並按下 Enter 鍵時,會篩選測試項目清單,只顯示完整名稱包含該字串的測試。

若要依不同的準則進行篩選:

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

  2. 選擇新的準則。

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

[測試總管] 中篩選測試的螢幕快照。

[測試總管] 中篩選測試的螢幕快照。

注意

搜尋不區分大小寫,並將指定的字串與準則值的任何部分相符。

限定 符 描述
狀態 在 [測試總管] 類別名稱中搜尋符合的項目:失敗的測試略過的測試通過的測試
特性 搜尋特徵類別和值以尋找相符項目。 單元測試架構會定義語法來指定特性類別和值。
完整名稱 搜尋測試命名空間、類別和方法的完整名稱以找出相符項目。
Project 搜尋符合的測試專案名稱。
目標框架 搜尋測試框架中的相符項目。
命名空間 搜尋測試命名空間中的相符項目。
類別 搜尋測試類別名稱中的匹配項。

若要排除篩選結果的子集,請使用下列語法:

FilterName:"Criteria" -FilterName:"SubsetCriteria"

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

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

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

若要在解決方案中進行測試方法的程式碼覆蓋率測試:

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

程式代碼涵蓋範圍結果 視窗會顯示行、函式、類別、命名空間和模組所執行之產品程式代碼區塊的百分比。

如需詳細資訊,請參閱 使用程式代碼涵蓋範圍來判斷測試的程式代碼數量。

測試快捷方式

您可以從測試總管執行測試,方法是:

  • 以滑鼠右鍵按下程式碼編輯器中的測試,然後選取 [執行測試]
  • 在 Visual Studio 中使用預設 測試總管快捷方式

部分快捷方式是以內容為基礎。 它們會根據游標在程式代碼編輯器中的位置執行 偵錯,或 分析 測試。 如果您的游標位於測試方法內,則該測試方法會執行。 如果您的游標位於類別層級,那麼該類別中的所有測試都會執行。 命名空間層級的行為在這裡相同。

常用命令 鍵盤快捷方式
TestExplorer.DebugAllTestsInContext Ctrl+R、Ctrl+T
TestExplorer.RunAllTestsInContext Ctrl+R、T
TestExplorer.RunAllTests Ctrl+R、A
TestExplorer.RepeatLastRun Ctrl+R、L

注意

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

設定聲音提示

測試總管可以在測試回合完成時播放下列其中一個音效:

  • 測試運行成功且所有測試皆通過時的音效提示
  • 表示測試回合至少完成一個失敗測試的音效

您可以在預設 Windows 11 Sound 對話框中設定這些音效。 這項功能可從Visual Studio 2019 Update 16.9 Preview 3 開始提供。

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

Windows 11 音效對話框的螢幕快照。