使用測試總管從 Visual Studio 或協力廠商單元測試專案執行單元測試。 在 [測試總管] 中,您可以將測試分組為類別、篩選測試清單,以及建立、儲存及執行測試播放清單。 您也可以使用測試總管來 偵錯單元測試 ,並 分析程式碼涵蓋範圍。
使用測試總管從 Visual Studio 或協力廠商單元測試專案執行單元測試。 在 [測試總管] 中,您可以將測試分組為類別、篩選測試清單,以及建立、儲存及執行測試播放清單。 您也可以使用測試總管來 偵錯單元測試 ,並在 Visual Studio Enterprise 中 分析程式碼涵蓋範圍。
測試總管可以從解決方案中的多個測試專案,以及屬於生產程式碼專案一部分的測試類別執行測試。 測試專案可以使用各種單元測試框架。 當針對 .NET 撰寫所測試的程式碼時,無論目標程式碼的語言為何,都可以使用任何以 .NET 為目標的語言來撰寫測試專案。 您必須使用 C++ 單元測試架構來測試原生 C 和 C++ 程式碼專案。
建置您的測試專案
如果您尚未在 Visual Studio 解決方案中設定測試專案,則必須先建立並建置測試專案。 使用這些資源:
Visual Studio 包含適用於 Managed 和原生程式碼的 Microsoft 單元測試架構。 不過,測試總管也可以執行任何已實作測試總管配接器的單元測試架構。 如需安裝協力廠商單元測試架構的詳細資訊,請參閱 安裝單元測試架構。
在測試總管中執行測試
當您建置測試專案時,測試會出現在 [測試總管] 中。 如果 [測試總管] 不可見,請選取 [Visual Studio 功能表上的 測試 ],然後選取 [ 測試總管 ] (或選取 Ctrl+E、T)。
當您執行、撰寫和重新執行測試時,測試總管會在 預設的專案、 命名空間和 類別群組中顯示結果。 您可以變更測試總管將測試分組的方式。
您可以從 [測試總管] 工具列執行尋找、組織及執行測試的大部分工作。
執行測試
選擇下列其中一個選項來執行測試:
若要執行解決方案中的所有測試,請選取 [全部執行] 圖示 (或選取 Ctrl+R、V)。
若要在預設群組中執行所有測試,請選取 [執行] 圖示,然後選取功能表上的群組。
若要執行個別測試,請選取一或多個測試,以滑鼠右鍵按一下窗格上的某個位置,然後選取 [執行選取的測試] (或選取 Ctrl+R、T)。
如果個別測試沒有相依性,無法以任何順序執行,請在工具列的設定功能表上開啟平行測試執行。 此動作可以減少執行所有測試的時間。
備註
若要設定執行單元測試的目標平台 (程序架構),請參閱 設定單元測試的程序架構。
每次建置後執行測試
若要在每次本地建置後執行單元測試,請選取 [測試總管] 工具列上的設定圖示,然後選取 [建置後執行測試]。
查看測試結果
當您執行、撰寫和重新執行測試時,測試總管會以 [失敗的測試]、[ 通過的測試]、[略 過的測試] 和 [未執行的測試] 群組顯示結果。 測試總管底部或側邊的詳細資料窗格會顯示測試執行的摘要。
查看測試詳細信息
若要檢視個別測試的詳細資料,請選取測試。
測試詳細資料窗格會顯示:
測試方法的來源檔名和行號。
測試的狀態。
測試方法執行所耗用的時間。
如果測試失敗,詳細資料窗格也會顯示:
單元測試架構針對測試傳回的訊息。
測試失敗時的堆疊追蹤。
檢視測試方法的原始程式碼
若要在 Visual Studio 編輯器中顯示測試方法的原始程式碼,請以滑鼠右鍵按一下測試,然後選取 [ 開啟測試 ] (或選取 F12 鍵)。
分組和篩選測試清單
在 [測試總管] 中,您可以將測試分組為預先定義的類別。 在測試總管中執行的大部分單元測試架構都可讓您定義自己的類別和類別/值組,以將測試分組。 您也可以將字串與測試屬性進行比對,以篩選測試清單。
在測試清單中分組測試
測試總管可讓您將測試分組到階層中。 預設階層群組是 Project、 Namespace,然後是 Class。 若要變更測試的組織方式,請選取 群組依據 按鈕
,然後選取新的分組準則。
您可以依照偏好的順序選取 Group By 選項,以定義自己的階層層級(例如,先依狀態分組,然後再依類別分組)。
Test Explorer 群組
| 群體 | Description |
|---|---|
| Duration | 依執行時間將測試分組:快速、中、慢。 |
| 州 | 依執行結果將測試分組: 失敗的測試、 略過的測試、 通過的測試、 未執行。 |
| 目標架構 | 依專案所針對的架構將測試分組。 |
| 命名空間 | 依包含命名空間將測試分組。 |
| 計畫 | 依測試所屬的專案進行分組。 |
| Class | 依包含類別將測試分組。 |
特徵
特徵通常是類別名稱/值組,但也可以是單一類別。 特性可以分配給單元測試框架中被識別為測試方法的方法。
單元測試架構可以定義特徵類別。 您可以將值新增至特徵類別,以定義您自己的類別名稱/值組。 單元測試架構會定義語法以指定特徵類別和值。
適用於 Managed Code 的 Microsoft 單元測試架構中的特徵
在 Microsoft Unit Testing Framework for Managed Code 中,您可以在屬性中 TestPropertyAttribute 定義特徵名稱/值組。 測試架構也包含下列預先定義的特徵:
| 特點 | Description |
|---|---|
| OwnerAttribute | 類別 Owner 是由單元測試架構所定義,並要求您提供擁有者的字串值。 |
| PriorityAttribute | 類別是由 Priority 單元測試架構所定義,並要求您提供優先順序的整數值。 |
| TestCategoryAttribute | 此 TestCategory 屬性可讓您指定單元測試的種類。 |
| TestPropertyAttribute | 此 TestProperty 屬性可讓您定義特徵類別/值組。 |
適用於 C++ 的 Microsoft 單元測試架構中的特徵
請參閱在 Visual Studio 中使用適用於 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>
測試瀏覽器資料行
群組 還可以用作測試總管中的資料行,同時 特徵、堆疊追蹤、錯誤訊息 和 完整限定名稱 也同樣可用。 預設情況下,大多數欄不可見。 您可以自訂顯示哪些欄。
欄位可以過濾、重新排列和排序:
若要篩選至特定特徵,請選取 特徵 欄頂端的篩選器圖示。
若要變更欄的順序,請選取欄標題,然後向左或向右拖曳。
若要排序欄,請選取欄標題。 並非所有資料行都可以排序。 您也可以按住 Shift 鍵並選取其他欄標題,以依次要欄排序。
搜尋和篩選測試清單
您也可以使用測試總管搜尋篩選來限制您檢視和執行之專案中的測試方法。
當您在 [測試總管] 搜尋方塊中輸入字串並選取 Enter 鍵時,會篩選測試清單,以只顯示其完整名稱包含字串的測試。
若要依不同的準則篩選:
開啟搜尋方塊右側的下拉式清單。
選擇新的準則。
在引號之間輸入篩選器值。 如果您想要搜尋字串上的完全相符項,而不是包含的相符項,請使用等號 (=) 而不是冒號 (:)。
備註
搜尋不區分大小寫,並將指定的字串與準則值的任何部分相符。
| 限定詞 | Description |
|---|---|
| 州 | 搜尋 Test Explorer 類別名稱以查找相符的名稱:失敗的測試、略過的測試、通過的測試。 |
| 特徵 | 搜尋特徵類別和值以尋找匹配的項目。 單元測試架構會定義語法以指定特徵類別和值。 |
| 完整名稱 | 搜尋測試命名空間、類別和方法的完整名稱以尋找相符項。 |
| 計畫 | 搜尋測試專案名稱以尋找相符項。 |
| 目標架構 | 搜尋測試架構中的相符項目。 |
| 命名空間 | 搜尋測試命名空間以尋找相符項目。 |
| Class | 搜尋測試類別名稱以尋找相符項目。 |
若要排除篩選器結果的子集,請使用下列語法:
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 聲音 對話方塊中設定這些聲音。 此功能從 Visual Studio 2019 Update 16.9 Preview 3 開始提供。
- 開啟預設的 Windows 11 聲音 對話方塊。
- 轉到 聲音 標籤。
- 尋找 Microsoft Visual Studio 類別。 選擇 [測試執行成功 ] 或 [測試執行失敗 ] 預設音效,或瀏覽至您自己的音訊檔案。