在資料庫單元測試中使用測試條件
更新:2007 年 11 月
在典型的「資料庫單元測試」(Database Unit Test) 中,會執行 Transact-SQL (T-SQL)「測試指令碼」(Test Script) 並傳回 ExecutionResult 類別的執行個體。這個類別的執行個體會包含 DataSet、執行時間以及受指令碼影響的資料列。這些資訊會在指令碼執行期間收集。這些結果可以在 T-SQL 指令碼內使用 RAISERROR 函式評估,或可以使用測試條件評估。Visual Studio Team System Database 版提供一組預先定義的測試條件讓您使用。
預先定義的測試條件
下表列出預先定義的測試條件,您可以使用資料庫單元測試設計工具的 [測試條件] 窗格加入這些測試條件。
測試條件 |
測試條件說明 |
---|---|
空白 ResultSet |
如果 T-SQL 指令碼傳回的結果集不是空的,即會失敗。 |
執行時間 |
如果 T-SQL 測試指令碼執行時間超出預期,即會失敗。預設執行時間為 30 秒。 執行時間只適用於測試指令碼,不適用測試前指令碼或測試後指令碼。 |
結果不明 |
永遠會產生結果不明的測試。這是會加到每一個測試中的預設條件。包含這個測試條件的目的,是要指出尚未實作測試驗證。當您已經加入其他測試條件之後,請從您的測試中刪除這個測試條件。 |
非空白 ResultSet |
如果結果集是空的,即會失敗。您可以在測試指令碼中使用這個測試條件,或使用 EmptyResultSet 搭配 T-SQL @@RAISERROR 函式,測試更新是否正常運作。例如,您可以儲存更新前的值、執行更新、比較更新後的值,然後如果沒有得到預期的結果,便會引發錯誤。 |
資料列數 |
如果結果集沒有包含預期的資料列數,即會失敗。 |
純量值 |
如果結果集中的特定值不等於指定值,即會失敗。預設 [需要的值] 為 null。 |
注意事項: |
---|
[執行時間] 測試條件會指定 T-SQL 測試指令碼執行的時間限制。如果超過此時間限制,測試就會失敗。測試結果也會包含 [持續期間] 統計資料,這與 [執行時間] 測試條件不同。[持續期間] 統計資料不只包含執行時間,也包含兩次連接資料庫的時間、執行任何其他測試指令碼的時間 (例如測試前和測試後指令碼),以及執行測試條件的時間。因此,即使持續期間超過執行時間,測試也會通過。 報告的 [持續期間] 不包括產生資料和部署結構描述所用的時間,因為這些動作是在測試執行之前發生。若要檢視測試持續期間,請在 [測試結果] 視窗中選取測試回合,按一下滑鼠右鍵,然後選擇 [檢視測試結果詳細資料]。 |
您可以使用資料庫單元測試設計工具的 [測試條件] 窗格,將測試條件加入資料庫單元測試。如需詳細資訊,請參閱 HOW TO:將測試條件加入到資料庫單元測試。
您也可以直接編輯測試方法程式碼,加入更多的功能。如需詳細資訊,請參閱在 Visual Basic 或 Visual C# 中自訂資料庫單元測試。例如,您可以加入 Assert 陳述式,將功能加入測試方法。如需詳細資訊,請參閱在資料庫單元測試中使用 T-SQL 判斷提示。
可延伸測試條件
除了六個預先定義的測試條件,您也可以自行撰寫新的測試條件。這些測試條件會顯示在資料庫單元測試設計工具的 [測試條件] 窗格中。如需詳細資訊,請參閱 HOW TO:加入測試條件至資料庫單元測試設計工具。