共用方式為


在資料庫單元測試中使用 Transact-SQL 判斷提示

在「資料庫單元測試」(Database Unit Test) 中,會執行 Transact-SQL 「測試指令碼」(Test Script),並傳回結果。 有時會以結果集的形式傳回結果。您可以使用測試條件來驗證結果。 例如,您可以使用測試條件來檢查特定結果集中所傳回的資料列數,或是驗證執行特定測試所花的時間。 如需測試條件的詳細資訊,請參閱在資料庫單元測試中使用測試條件

您也可以使用 Transact-SQL 判斷提示 (在 Transact-SQL 指令碼中即為「RAISERROR 陳述式」(RAISERROR Statement)),而不需使用測試條件。 在某些情況下,您可能會偏好使用 Transact-SQL 判斷提示,而非測試條件。

使用 Transact-SQL 判斷提示

在您決定使用 Transact-SQL 判斷提示或測試條件來驗證資料之前,應該考慮以下幾點事項。

  • 效能: 在伺服器上執行 Transact-SQL 判斷提示要比先將資料移到用戶端電腦再從本機進行管理來得快。

  • 對語言的熟悉程度: 您可能會根據現有的專門技術而偏好特定的語言,因而選擇 Transact-SQL 判斷提示或是 C# 或 Visual Basic 測試條件。

  • 複雜的驗證: 在某些情況下,您可以建置更複雜的測試驗證,而不只是使用 C# 或 Visual Basic,並在用戶端上驗證您的測試。

  • 舊版驗證程式庫: 如果您已經有執行驗證的程式碼,可以在資料庫單元測試中使用該程式碼,而不需使用測試條件。

使用預期的例外狀況來標示單元測試方法

若要使用預期的例外狀況來標示資料庫單元測試方法,請加入下列屬性:

<ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)> _
[ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)]

其中:

  • nnnnn 是預期的訊息編號,例如 14025

  • x 是預期的例外狀況嚴重性

  • y 是預期的例外狀況狀態

任何未指定的參數都會被忽略。 您可以將這些參數傳遞至資料庫程式碼中的 RAISERROR 陳述式。 如果指定 MatchFirstError = true,此屬性會符合例外狀況中的任何 SqlErrors。 預設行為 (MatchFirstError = true) 是只符合第一個發生的錯誤。

如需如何使用預期的例外狀況和負面資料庫單元測試的範例,請參閱逐步解說:建立和執行資料庫單元測試

RAISERROR 陳述式

您可以在 Transact-SQL 指令碼中使用 RAISERROR 陳述式,即可直接在伺服器上使用 Transact-SQL 判斷提示。 它的語法為:

**RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)**

其中:

@ErrorMessage 是任何使用者定義的錯誤訊息, 您可以設定此訊息字串的格式,使其類似於 printf_s 函式。

@ErrorSeverity 為使用者定義的嚴重性層級 (從 0 – 18)。

注意事項注意事項

嚴重性層級 '0' 和 '10' 的值不會讓資料庫單元測試失敗; 您可以使用 0 - 18 範圍中的任何其他值,讓測試失敗。

@ErrorState 是 1 到 127 之間的任意整數。 您可以使用這個整數來區分在程式碼中不同位置所引發之單一錯誤的發生。

如需詳細資訊,請參閱 Microsoft 網站上《SQL Server 線上叢書》中的 RAISERROR (Transact-SQL)。 以下主題中有提供在資料庫單元測試中使用 RAISERROR 的範例:HOW TO:撰寫會在單一交易範圍中執行的資料庫單元測試

請參閱

工作

HOW TO:開啟要編輯的資料庫單元測試

概念

在資料庫單元測試中使用測試條件

使用單元測試驗證資料庫程式碼