天天看點

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

  我們開發一個系統必須與資料庫打交道,需要寫N個SQL、存儲過程、自定義函數、視圖等,那麼能否使用Visual Studio 2008進行資料庫測試嗎?當然是可以的,下面我就以一個簡單的為例子,介紹如何利用Visual Studio 2008進行資料庫單元測試。

  第一步,在Visual 2008裡面增加資料庫測試,如下圖所示:

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試
一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

>這樣我們就添加好一個資料庫單元測試,下面就是如何設定此單元測試是針對哪個資料庫的。

  第二步:指定目前測試項目的資料庫配置

  當我們新增加一個資料庫單元測試,Visual 2008會自動彈出配置界面,供我們設定資料庫連接配接屬性,如下圖:

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

  我們可以選擇一個建立好的資料庫連接配接:

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

  當然也可以新增一個連接配接,新增資料庫連接配接比較簡單,就是設定伺服器位址、使用者名、密碼、資料庫名稱等,在此就不介紹了。

  Visual

2008不僅支援我們連接配接一個已經存在的資料庫,還可以運作單元測試前,自動部署一個資料庫供測試,

  連接配接好資料庫後,下面将介紹如何進行單元測試。

  第三步:測試用例

  在Visual 2008資料庫單元測試的“設計”界面,首先會有二個下拉框,如下圖所示:

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

  左側的下拉框即是資料庫單元測試的每個“測試方法”,你可以把他當成代碼單元測試的函數,系統預設會有二個:公共腳本和DatabaseTest1,如下圖:

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

公用腳本:在執行此單元測試前運作的SQL腳本,包括“測試初始化”和“測試清理”,即對應的準備資料的腳本、測試完成後删除資料的腳本,可以保證每次執行單元測試時,資料都是一緻的。

測試方法:可以新增、删除、重命名,可以通過增加測試方法來實作不同用例的驗證。

  第四步:編寫測試腳本

  針對每個測試方法可以編寫測試SQL腳本,即SQL語句,隻要能夠在測試資料庫中正确執行的SQL語句都可以,然後針對你編寫的SQL語句執行的結果進行驗證,如下圖:

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

  此段SQL語句是讀取成本系統的業務參數,我們可以針對此SQL進行驗證其正确性,Visual 2008支援六種測試條件:

标量值:可以判斷第幾個結果集的第幾行的第幾列的值是多少,不相等則驗證失敗。

非空結果集:判斷第幾個結果集必須有記錄,否則驗證失敗。

空結果集:判斷第幾個結果集必須沒有記錄,否則驗證失敗。

沒有結論:無結論就是測試沒有結果,注意當你新增加一個測試方法時,Visual會自動生成一個沒有結論的測試條件,如果你不需要,則手動删除掉。

行數:判斷第幾個結果集傳回的行數,否則驗證失敗。

l執行時間:判斷執行時間必須少于多少,否則驗證失敗,用于性能測試。

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

  那麼針對上面的SQL語句,我們可以驗證傳回的行數,可以通過行數的多少,驗證成本系統的業務參數數量是否正确,如下圖:

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

  當傳回的行數等于30時,代表資料庫中的數量是正确的。當然你也可以增加其它測試條件,如使用标量值驗證參數的名稱是否正确等。

  第五步:運作測試

  點選“運作測試”按鈕即可得到測試結果,如下圖所示:

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

  測試沒有通過,可以檢視錯誤資訊:RowCountCondition 條件(rowCountCondition1)失敗: 結果集 1: 32 行與預期的 30 行不比對。

  分析原因,資料庫執行的結果有32行,與測試條件不比對,修改測試條件,重新運作測試,測試通過,如下圖:

一起談.NET技術,Visual Studio 2008單元測試_資料庫測試

2008資料庫單元測試通過編寫SQL腳本,然後設定不同的測試條件,通過驗證測試條件是否比對還進行測試,是以你可以寫任何SQL語句進行驗證,這樣就可以驗證表記錄、視圖、存儲過程、函數等,基本包括了所有的資料庫對象。

我們可以通過資料庫單元測試來保證我們每次修改資料庫對象的正确性,也可以保證我們的SQL語句是否送出,隻要切換一下測試資料庫即可,可以防止開發人員送出版本時漏掉送出SQL被測試打回的場景了。