Share via


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

Visual Studio 測試總管可協助您在整合式的開發程序的單元測試。 您可以從方案中的多個測試專案,以及實際執行程式碼專案部分的測試類別中執行測試。 測試專案可以使用不同的單元測試架構。 在本主題中,您可以學習:

本節內容

單元測試架構和測試專案

在測試總管執行測試

  • 正在執行測試

  • 在每一個組建之後執行測試

檢視測試結果

  • 檢視測試詳細資料

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

群組和篩選測試清單

  • 群組測試清單

  • 由特性的群組

  • 搜尋和篩選測試清單

偵錯單元測試

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

診斷測試方法效能問題。

外部資源

  • 指引

單元測試架構和測試專案

Visual Studio 包含Microsoft 單元測試架構的管理以及原始碼 。 不過,測試總管也可以執行任何被測試總管配單元實作的測試架構。 如需安裝第三方單元測試架構的詳細資訊,請參閱 HOW TO:安裝協力廠商單元測試架構

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

本節內容

在測試總管執行測試

當您建立測試專案時,測試隨即出現在測試總管。 如果測試總管不可見,請選擇 Visual Studio 功能表上的 [測試][Windows],然後選取 [測試總管]。

單元測試總管

當您執行、寫入、重新執行您的測試時,測試總管會顯示 [失敗的測試] 預設群組的結果, [通過的測試]、 [尚未執行的測試] 和 [未執行的測試]。 您可以變更測試總管群組測試的方式。

您可以從測試總管工具列上執行許多尋找,組織並執行測試工作的功能。

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

Hh270865.collapse_all(zh-tw,VS.110).gif正在執行測試

您可以用群組方式執行方案中所有測試的所有測試,或是您選取的一組測試。 執行下列任一步驟:

  • 若要執行方案中的所有測試,請選取 [全部執行]。

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

  • 選取您要執行的個別測試,然後開啟所選取之測試的捷徑功能表並選取 [執行所選測試]。

成功/失敗列在測試總管視窗的頂端,並以動畫來執行測試。 在測試回合結束時,成功/失敗列轉成綠色,如果有任何一個測試失敗,則所有列會變成紅色。

Hh270865.collapse_all(zh-tw,VS.110).gif在每一個組建之後執行測試

警告

在每一個組建之後執行單元測試 只在Visual Studio Ultimate 被支援。

建置後執行

若要執行單元測試,則在每個本機組建中選取標準功能表之後的 [測試] ,再選取測試總管工具列上的 [建置之後執行測試] 。

本節內容

檢視測試結果

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

Hh270865.collapse_all(zh-tw,VS.110).gif檢視測試詳細資料

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

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

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

  • 測試的狀態。

  • 測試方法執行的耗用時間。

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

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

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

Hh270865.collapse_all(zh-tw,VS.110).gif檢視測試方法的原始程式碼

若要在 Visual Studio 編輯器顯示測試方法的原始程式碼,請選取測試然後選取捷徑功能表 (鍵盤的 [開啟測試] :F12)。

本節內容

群組和篩選測試清單

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

Hh270865.collapse_all(zh-tw,VS.110).gif群組測試清單

若要將測試組織的方法,請在 [GROUP BY] 按鈕 [測試總管] 的 [群組] 按鈕 選取旁邊的向下箭號並選取新的群組準則。

測試總管群組

Group

描述

持續期間

群組測試在執行階段之前: [快速]、 [媒體] 和 [緩慢]。

結果

由執行結果的群組測試: [失敗的測試], [略過的測試], [成功的測試]。

特性

bycategory 群組的測試與您所定義的值。 指定的分類和值的語法與單元測試架構所定義。

專案

群組名稱來測試專案。

Hh270865.collapse_all(zh-tw,VS.110).gif由特性的群組

這通常是一個分類名稱/值組,不過,它也可以是單一分類。 表示可以指派至識別為測試方法的單元測試架構的方法。 單元測試架構的定義特性分類。 您可以將值加入至特性分類定義自己的分類名稱/值組。 指定的分類和值的語法與單元測試架構所定義。

例如,您可以使用 TestPropertyAttribute,在 Managed 應用程式的 Microsoft 單元測試架構,您可以定義一個特性名稱/值組。 Microsoft 單元測試架構也包含這些預先定義的特性:

特性

描述

[ T:Microsoft.VisualStudio.TestTools.UnitTesting.OwnerAttribute ]

擁有者分類是由單元測試架構所定義且會要求您提供擁有者的字串值。

[ T:Microsoft.VisualStudio.TestTools.UnitTesting.PriorityAttribute ]

優先權分類是由單元測試架構所定義且會要求您提供優先順序的整數值。

[ T:Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute ]

TestCategory 屬性可讓您提供分類,沒有值。 TestCategory 屬性定義的分類也是 TestProperty 屬性的分類。

[ T:Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute ]

TestProperty 屬性可讓您定義特性類別/值組。

在測試 Microsoft Unit Testing Framework 的特性為 C++

若要定義功能,請使用 TEST_METHOD_ATTRIBUTE 巨集。 例如,定義特性命名為 TEST_MY_TRAIT:

#define TEST_MY_TRAIT(traitValue) TEST_METHOD_ATTRIBUTE(L"MyTrait", traitValue)

使用定義的特性在單元測試:

BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
    TEST_OWNER(L"OwnerName")
    TEST_PRIORITY(1)
    TEST_MY_TRAIT(L"thisTraitValue")
END_TEST_METHOD_ATTRIBUTE()

TEST_METHOD(Method1)
{   
    Logger::WriteMessage("In Method1");
    Assert::AreEqual(0, 0);
}

C++ 特性屬性巨集

巨集

描述

TEST_METHOD_ATTRIBUTE(attributeName, attributeValue)

使用 TEST_METHOD_ATTRIBUTE 巨集定義特性。

TEST_OWNER(ownerAlias)

使用預先定義的擁有者特性指定測試方法的擁有者。

TEST_PRIORITY(priority)

使用預先定義的優先權特性指派相對優先順序加入至測試方法。

本節內容

Hh270865.collapse_all(zh-tw,VS.110).gif搜尋和篩選測試清單

您可以使用測試總管篩選條件在檢視和執行之項目的測試方法。

當您輸入字串在測試總管的搜尋方塊並按下 ENTER 鍵時,測試清單篩選為只顯示完整限定名稱包含字串的測試。

由篩選不同準則:

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

  2. 選取新的準則。

  3. 輸入篩選值在引號之間。

搜尋篩選條件分類

注意事項注意事項

搜尋是區分大小寫且符合指定字串為標準值的任何部分。

限定詞

描述

特性

要搜尋的分類和值相符。 語法指定特性分類的和值是由單元測試架構所定義。

專案

搜尋測試專案名稱相符。

錯誤訊息

搜尋失敗的判斷提示傳回的使用者定義的錯誤訊息遊戲。

檔案路徑。

搜尋測試來源檔完整檔案名稱相符。

完整名稱

搜尋測試命名空間、類別和方法完整檔案名稱相符。

Output

搜尋寫入標準輸出的使用者定義的錯誤訊息 (stdout) 或標準錯誤 (stderr) 中。 指定輸出訊息的語法與單元測試架構所定義。

結果

搜尋測試總管分類名稱相符: [失敗的測試], [略過的測試], [成功的測試]。

本節內容

偵錯單元測試

您可以使用測試總管啟動測試的偵錯工作階段。 逐步執行使用 Visual Studio 偵錯工具的程式碼會反覆的在單元測試和專案之間進行測試。 若要啟動偵錯:

  1. 在 Visual Studio 編輯器裡,請在您要偵錯的一或多個測試方法上設定中斷點。

    注意事項注意事項

    由於測試方法可以任何順序執行,請在您要偵錯的所有測試方法中設定中斷點。

  2. 在測試總管中,選取測試方法然後選取捷徑功能表上的 [偵測選取的測試] 。

如需除錯工具的詳細資訊,請參閱Visual Studio 偵錯

本節內容

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

注意事項注意事項

單元測試之程式碼涵蓋範圍僅適用於 Visual Studio Ultimate 和 Visual Studio Premium。

您可以以您的單元測試實際測試數量您的產品代碼,並使用 Visual Studio 程式碼涵蓋範圍工具。 您可以執行程式碼涵蓋範圍所選取之測試或在方案中的所有測試。

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

  1. 選取 Visual Studio 功能表上的 [測試] 然後選取 [分析程式碼涵蓋範圍]。

  2. 從子功能表中選擇下列其中一個命令:

    • [選取的測試] 執行您在測試總管選取的測試方法。

    • [所有測試] 執行方案中所有的測試方法。

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

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

本節內容

診斷測試方法效能問題。

若要診斷測試方法為何需要相當長的時間,請選取測試總管中方法然後選擇捷徑功能表上的 [設定檔] 。 請參閱 使用程式碼剖析工具分析應用程式效能

本節內容

外部資源

Hh270865.collapse_all(zh-tw,VS.110).gif指引

測試以搭配使用 Visual Studio 2012RC–第 2 章:單元測試:內部測試

請參閱

概念

使用單元測試驗證程式碼

HOW TO:以 64 位元處理序的形式執行單元測試