共用方式為


單元測試架構

更新:2007 年 11 月

單元測試架構可以支援 Visual Studio 中的單元測試。當您撰寫單元測試時,請使用 Microsoft.VisualStudio.TestTools.UnitTesting 命名空間中的類別 (Class) 和成員。不論從頭開始撰寫單元測試,或是修改從測試之程式碼所產生的單元測試時,都可以使用這些類別和成員。

項目群組

為了協助提供單元測試架構更清楚的概觀,本章節會將 UnitTesting 命名空間的項目以相關功能進行分組。

注意事項:

屬性 (Attribute) 項目 (以 Attribute 字串結束) 可以選擇是否搭配 Attribute 字串使用。例如,下列兩行程式碼具有完全相同的作用:

[TestClass()]

[TestClassAttribute()]

用於資料導向測試的項目

請使用下列項目設定資料導向單元測試。如需詳細資訊,請參閱為資料驅動的單元測試編碼HOW TO:設定資料驅動的單元測試

用於建立呼叫順序的屬性

附有以下列屬性 (Attribute) 之一的程式碼項目,會在您所指定的時刻遭到呼叫。如需詳細資訊,請參閱單元測試的結構

針對組件

在組件 (Assembly) 載入之後和卸載之前,都會立即呼叫 AssemblyInitialize 和 AssemblyCleanup。

針對類別

在類別載入之後和卸載之前,都會立即呼叫 ClassInitialize 和 ClassCleanup。

針對測試方法

用來識別測試類別和方法的屬性

每個測試類別都必須具有 TestClass 屬性 (Attribute),而且每個測試方法都必須具有 TestMethod 屬性 (Attribute)。如需詳細資訊,請參閱單元測試的結構

Assert 類別和相關的例外狀況

單元測試可以使用各種 Assert 陳述式、例外狀況和屬性 (Attribute),確認特定的應用程式行為。如需詳細資訊,請參閱使用 Assert 類別

TestContext 類別

測試內容類別的屬性 (Property) 會儲存關於目前測試回合的資訊。例如,TestContext.DataRow 和 TestContext.DataConnection 屬性便包含資料導向單元測試之測試所使用的資訊。

用於識別和排序測試的屬性

下列屬性 (Attribute) 及指派給這些屬性 (Attribute) 的值,都會出現在 Visual Studio 的 [屬性] 視窗中,做為進行特定測試的方法。

這些屬性 (Attribute) 並不表示要由單元測試的程式碼進行存取,而是要影響使用或執行單元測試的方式 (可能透過 Visual Studio 的 IDE 進行,或是由 Team System 測試引擎進行)。

例如,這些屬性 (Attribute) 中有一部分會顯示成測試清單管理員和 [測試結果] 視窗中的資料行,這表示您可以使用這些屬性來分組及排序測試和測試結果。

TestPropertyAttribute 就是這樣的一種屬性 (Attribute),可以用來將任意的中繼資料加入至單元測試,例如,以 [TestProperty("TestPass", "Accessibility")] 標記單元測試,即可使用此屬性儲存這項測試所涵蓋之成功測試的名稱,而 [TestProperty("TestKind", "Localization")] 則可以用來儲存測試種類的指示器 (Indicator)。使用這個屬性 (Attribute) 所建立的屬性 (Property),以及您所指派的屬性值 (Property Value),都會在 Visual Studio [屬性] 視窗的 [測試專屬] 標題下出現。

測試組態類別

用於產生報告的屬性

本節中的屬性 (Attribute),會使其所附加的測試方法,與 Team Foundation Server Team 專案之專案階層架構中的實體 (Entity) 相關。如需詳細資訊,請參閱 HOW TO:啟用測試結果的報告功能

以私用存取子使用的類別

HOW TO:測試私用方法 所說明,您可以產生私用方法的單元測試。這項產生作業會建立一個私用存取子類別,該類別則會具現化 (Instantiate) PrivateObject 類別的物件。PrivateObject 類別是一種包裝函式類別 (Wrapper Class),會使用反映 (Reflection) 做為私用存取子處理序的一部分。PrivateType 類別也與此相似,不過是用來呼叫私用靜態方法,而非私用執行個體方法。

請參閱

概念

使用 Assert 類別

使用 TestContext 類別

參考

Microsoft.VisualStudio.TestTools.UnitTesting