共用方式為


資料庫單元測試概觀

更新:2007 年 11 月

您可以使用「資料庫單元測試」(Database Unit Test) 來建立資料庫的基準狀態,然後驗證您對「資料庫物件」(Database Object) 所做的任何後續變更。第一個步驟是撰寫 T-SQL 測試集來運用某個資料庫物件,並驗證該資料庫物件是否正確運作。然後,當您變更基礎結構描述時,您會使用這些測試來驗證所做的變更並未破壞現有的功能。您可以藉由撰寫會評估資料庫設計變更成功或失敗的單元測試,確保這些變更會如預期般套用,而且不會引入錯誤。資料庫單元測試隨附於軟體開發人員所建立的軟體單元測試中;若要管理整體應用程式的變更,必須要有這兩組單元測試。

若要撰寫單元測試,您必須先建立一個隔離的資料庫開發環境,與實際執行資料庫區隔。使用 Visual Studio Team System Database 版,遵循以下基本步驟:

  1. 建立資料庫專案

  2. 將結構描述從實際執行資料庫匯入該專案中

  3. 部署此資料庫專案來建立資料庫,此資料庫會使用與實際執行資料庫相同的結構描述

  4. 將測試資料填入該資料庫中

當隔離的資料庫開發環境已建立並填入資料以後,您可以開始撰寫單元測試來評估該環境中的資料庫物件。當資料庫物件經過測試之後,這些單元測試可用來偵測由於資料庫中的變更而產生的功能回復。在隔離的開發環境中測試這些變更,可確保您的實際執行資料庫不會受到損害。當您已經完全測試過變更之後,可以將單元測試部署回包含其他小組成員變更的更大型測試環境,如此可讓您快速地識別及更正其他資料庫變更所產生的回復。

您也可以在手動部署程序中執行單元測試,在此情況下,您會從標記的一組來源產生建置指令碼,並視需要編輯此建置指令碼。將資料庫部署到開發用伺服器,然後執行資料庫與軟體單元測試來驗證資料庫與整體應用程式的狀態。當所有的測試都通過以後,您可以將此資料庫部署回實際執行環境。如需詳細資訊,請參閱管理資料庫變更

建立資料庫單元測試

您可以建立資料庫單元測試來評估對任何資料庫物件所做的變更;但是,Database 版包含了對於資料庫函式、觸發程序和預存程序的一些額外支援。當您為這些物件建立測試時,會自動產生用來測試此資料庫物件的 T-SQL 程式碼片段供您自訂。如需詳細資訊,請參閱 HOW TO:為函式、觸發程序和預存程序建立資料庫單元測試HOW TO:建立空白資料庫單元測試

注意事項:

您可以建立及執行資料庫單元測試,而不需開啟「資料庫專案」(Database Project)。但是,您必須開啟包含您要測試之物件的資料庫專案,才能從這些物件產生 T-SQL 指令碼。

設計單元測試

就像其他建置到 Visual Studio Team System Test 版的測試類型一樣,資料庫單元測試也整合到 Visual Studio 中。使用 [資料庫單元測試設計工具] 可以定義 Transact-SQL (T-SQL) 測試指令碼來執行資料庫指令碼,然後針對指示指令碼動作成功或失敗的測試條件來評估這些指令碼的結果。

[資料庫單元測試設計工具] 包含以下功能:

功能

用途

巡覽列 - [測試名稱] 清單方塊

根據名稱選取測試專案中的個別單元測試或是選取 [通用指令碼] 來開發指令碼,使其在相同測試類別的每一個單元測試之前或之後執行。

巡覽列 - [測試] 清單方塊

選取測試前、測試或測試後的選項來撰寫會在單元測試期間的不同時間評估的 T-SQL 指令碼和測試條件。您可以使用測試前指令碼來建立開發資料庫內的某個狀態;您可以使用測試後指令碼,在測試執行之後讓資料庫回到起始狀態,或是根據所需的權限,使用此指令碼來評估測試的成功與否。

T-SQL 編輯器

使用此編輯器可撰寫用於單元測試的測試前、測試和測試後的 T-SQL 指令碼。使用 T-SQL RAISERROR 命令也可以在測試指令碼中撰寫 T-SQL 判斷提示陳述式,而不需使用測試條件。就像測試條件一樣,這個命令也可用來根據嚴重性值指示該測試通過還是失敗。如需詳細資訊,請參閱在資料庫單元測試中使用 T-SQL 判斷提示

[測試條件] 窗格

使用此視窗中的測試條件可評估 T-SQL 指令碼執行的結果。

使用測試條件

[測試條件] 窗格提供了一組預先定義的測試條件,藉以測試一些東西,例如,結果集中傳回的資料列數、執行 T-SQL 指令碼所需的時間量,以及結果集是否為空的。每一個預先定義的測試條件都有一個 Assert 方法 (定義在基底 TestCondition 類別上),當評估測試條件時,會呼叫此方法。如果針對所要的結果評估執行結果時,測試條件失敗了,該條件會擲回例外狀況,而且會在 [測試結果] 視窗中傳回失敗結果。測試條件會藉由不擲回例外狀況來指示測試已通過。

當您執行測試時,會先執行 T-SQL 指令碼,並傳回結果。一般來說,這會是結果集。此測試條件的實作可判斷會根據哪一部分的傳回資訊來評估成功與否。例如,「執行時間」測試條件會評估執行 T-SQL 指令碼所需的時間,而「純量值」測試條件會評估特定資料列中的值。會根據這項評估的結果,將通過或失敗指示器顯示在 [測試結果] 視窗中。通過/失敗指示器取決於是否能成功評估測試指令碼的所有測試條件;如果有一個條件擲回例外狀況,代表該測試整體為失敗。

有六個預先定義的測試條件,但由於測試條件是可延伸的,所以您可以視需要將其他測試條件加入到測試條件清單中。您也可以在 T-SQL 指令碼中使用 T-SQL RAISERROR 函式,以產生通過或失敗的結果,並讓這項結果出現在 [測試結果] 視窗中。如需詳細資訊,請參閱在資料庫單元測試中使用 T-SQL 判斷提示

注意事項:

會自動將「結果不明」測試條件,加入到您在 Visual Studio Test 版中所產生的單元測試以及您在 Database 版中所產生的資料庫單元測試。如果會評估此測試條件,則會將測試標示為「結果不明」,「結果不明」測試條件會擲回 InconclusiveException。根據預設,這個測試條件會包含在所有測試中,以便提醒您加入其他判斷提示或測試條件。您可以輕鬆地移除這個測試條件,其方式是在 [測試條件] 視窗中選取該測試條件,然後按一下 [刪除測試條件] 圖示。 

如需預先定義之測試條件的完整清單,請參閱在資料庫單元測試中使用測試條件

如果測試逾時或遭到中止,則測試也會失敗。如需您可在 [測試結果] 視窗中看到之結果的詳細資訊,請參閱基本測試結果

單元測試和測試資料

您可以使用 Team Edition for Database Professionals 的資料產生功能,將測試資料加入到資料庫環境中。這項功能包括一組資料產生器,這些產生器將會在提供特定初始值的情況下產生相同的資料。如此可讓您產生資料、檢查產生的資料庫來判斷各種測試所應該產生的結果,然後據此來撰寫您的測試。如需如何搭配單元測試使用資料產生的詳細資訊,請參閱逐步解說:建立和執行資料庫單元測試。如需不同資料產生器的詳細資訊,請參閱產生資料概觀

在命令列上測試

如果您想要讓測試回合自動化,您可以在 IDE 或命令提示字元中執行資料庫單元測試。如需詳細資訊,請參閱從命令列執行測試

請參閱

工作

HOW TO:將測試條件加入到資料庫單元測試

概念

Transact-SQL 編輯器概觀

Database Edition 的用語概觀