|
我們開(kāi)發(fā)一個(gè)系統(tǒng)必須與數(shù)據(jù)庫(kù)打交道,需要寫(xiě)N個(gè)SQL、存儲(chǔ)過(guò)程、自定義函數(shù)、視圖等,那么能否使用Visual Studio 2008進(jìn)行數(shù)據(jù)庫(kù)測(cè)試嗎?當(dāng)然是可以的,下面我就以一個(gè)簡(jiǎn)單的為例子,介紹如何利用Visual Studio 2008進(jìn)行數(shù)據(jù)庫(kù)單元測(cè)試。
第一步,在Visual 2008里面增加數(shù)據(jù)庫(kù)測(cè)試,如下圖所示:
>這樣我們就添加好一個(gè)數(shù)據(jù)庫(kù)單元測(cè)試,下面就是如何設(shè)置此單元測(cè)試是針對(duì)哪個(gè)數(shù)據(jù)庫(kù)的。
第二步:指定當(dāng)前測(cè)試項(xiàng)目的數(shù)據(jù)庫(kù)配置
當(dāng)我們新增加一個(gè)數(shù)據(jù)庫(kù)單元測(cè)試,Visual 2008會(huì)自動(dòng)彈出配置界面,供我們?cè)O(shè)置數(shù)據(jù)庫(kù)連接屬性,如下圖:
我們可以選擇一個(gè)建立好的數(shù)據(jù)庫(kù)連接:
當(dāng)然也可以新增一個(gè)連接,新增數(shù)據(jù)庫(kù)連接比較簡(jiǎn)單,就是設(shè)置服務(wù)器地址、用戶名、密碼、數(shù)據(jù)庫(kù)名稱等,在此就不介紹了。
Visual 2008不僅支持我們連接一個(gè)已經(jīng)存在的數(shù)據(jù)庫(kù),還可以運(yùn)行單元測(cè)試前,自動(dòng)部署一個(gè)數(shù)據(jù)庫(kù)供測(cè)試,
連接好數(shù)據(jù)庫(kù)后,下面將介紹如何進(jìn)行單元測(cè)試。
第三步:測(cè)試用例
在Visual 2008數(shù)據(jù)庫(kù)單元測(cè)試的“設(shè)計(jì)”界面,首先會(huì)有二個(gè)下拉框,如下圖所示:
左側(cè)的下拉框即是數(shù)據(jù)庫(kù)單元測(cè)試的每個(gè)“測(cè)試方法”,你可以把他當(dāng)成代碼單元測(cè)試的函數(shù),系統(tǒng)默認(rèn)會(huì)有二個(gè):公共腳本和DatabaseTest1,如下圖:
- 公用腳本:在執(zhí)行此單元測(cè)試前運(yùn)行的SQL腳本,包括“測(cè)試初始化”和“測(cè)試清理”,即對(duì)應(yīng)的準(zhǔn)備數(shù)據(jù)的腳本、測(cè)試完成后刪除數(shù)據(jù)的腳本,可以保證每次執(zhí)行單元測(cè)試時(shí),數(shù)據(jù)都是一致的。
- 測(cè)試方法:可以新增、刪除、重命名,可以通過(guò)增加測(cè)試方法來(lái)實(shí)現(xiàn)不同用例的驗(yàn)證。
第四步:編寫(xiě)測(cè)試腳本
針對(duì)每個(gè)測(cè)試方法可以編寫(xiě)測(cè)試SQL腳本,即SQL語(yǔ)句,只要能夠在測(cè)試數(shù)據(jù)庫(kù)中正確執(zhí)行的SQL語(yǔ)句都可以,然后針對(duì)你編寫(xiě)的SQL語(yǔ)句執(zhí)行的結(jié)果進(jìn)行驗(yàn)證,如下圖:
此段SQL語(yǔ)句是讀取成本系統(tǒng)的業(yè)務(wù)參數(shù),我們可以針對(duì)此SQL進(jìn)行驗(yàn)證其正確性,Visual 2008支持六種測(cè)試條件:
- 標(biāo)量值:可以判斷第幾個(gè)結(jié)果集的第幾行的第幾列的值是多少,不相等則驗(yàn)證失敗。
- 非空結(jié)果集:判斷第幾個(gè)結(jié)果集必須有記錄,否則驗(yàn)證失敗。
- 空結(jié)果集:判斷第幾個(gè)結(jié)果集必須沒(méi)有記錄,否則驗(yàn)證失敗。
- 沒(méi)有結(jié)論:無(wú)結(jié)論就是測(cè)試沒(méi)有結(jié)果,注意當(dāng)你新增加一個(gè)測(cè)試方法時(shí),Visual會(huì)自動(dòng)生成一個(gè)沒(méi)有結(jié)論的測(cè)試條件,如果你不需要,則手動(dòng)刪除掉。
- 行數(shù):判斷第幾個(gè)結(jié)果集返回的行數(shù),否則驗(yàn)證失敗。
- l執(zhí)行時(shí)間:判斷執(zhí)行時(shí)間必須少于多少,否則驗(yàn)證失敗,用于性能測(cè)試。
那么針對(duì)上面的SQL語(yǔ)句,我們可以驗(yàn)證返回的行數(shù),可以通過(guò)行數(shù)的多少,驗(yàn)證成本系統(tǒng)的業(yè)務(wù)參數(shù)數(shù)量是否正確,如下圖:
當(dāng)返回的行數(shù)等于30時(shí),代表數(shù)據(jù)庫(kù)中的數(shù)量是正確的。當(dāng)然你也可以增加其它測(cè)試條件,如使用標(biāo)量值驗(yàn)證參數(shù)的名稱是否正確等。
第五步:運(yùn)行測(cè)試
點(diǎn)擊“運(yùn)行測(cè)試”按鈕即可得到測(cè)試結(jié)果,如下圖所示:
測(cè)試沒(méi)有通過(guò),可以查看錯(cuò)誤信息:RowCountCondition 條件(rowCountCondition1)失敗: 結(jié)果集 1: 32 行與預(yù)期的 30 行不匹配。
分析原因,數(shù)據(jù)庫(kù)執(zhí)行的結(jié)果有32行,與測(cè)試條件不匹配,修改測(cè)試條件,重新運(yùn)行測(cè)試,測(cè)試通過(guò),如下圖:
Visual 2008數(shù)據(jù)庫(kù)單元測(cè)試通過(guò)編寫(xiě)SQL腳本,然后設(shè)置不同的測(cè)試條件,通過(guò)驗(yàn)證測(cè)試條件是否匹配還進(jìn)行測(cè)試,因此你可以寫(xiě)任何SQL語(yǔ)句進(jìn)行驗(yàn)證,這樣就可以驗(yàn)證表記錄、視圖、存儲(chǔ)過(guò)程、函數(shù)等,基本包括了所有的數(shù)據(jù)庫(kù)對(duì)象。
我們可以通過(guò)數(shù)據(jù)庫(kù)單元測(cè)試來(lái)保證我們每次修改數(shù)據(jù)庫(kù)對(duì)象的正確性,也可以保證我們的SQL語(yǔ)句是否提交,只要切換一下測(cè)試數(shù)據(jù)庫(kù)即可,可以防止開(kāi)發(fā)人員提交版本時(shí)漏掉提交SQL被測(cè)試打回的場(chǎng)景了。
NET技術(shù):Visual Studio 2008單元測(cè)試_數(shù)據(jù)庫(kù)測(cè)試,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。