我們在TSQL存儲過程中有相當多的邏輯。作爲自動化測試的忠實粉絲,我開始爲存儲過程編寫自動化測試。測試存儲過程的邏輯
我通過從C#項目調用存儲過程來測試存儲過程。我使所有測試都接觸到從基類繼承的數據庫,確保測試在從未提交的TransactionScope中運行。有幾個與此相關的問題:
- 與未接觸數據庫的測試相比,測試速度較慢,但我認爲沒有太多可以完成的測試。
- 有時我遇到FK問題,當我想讓數據庫進入測試邏輯運行之前我需要的狀態。例如。當我需要截斷FK引用的表時,你無法做到這一點。我還需要擺脫引用表中的行。
- 有時候我需要編寫一個新的存儲過程或查詢來使數據庫進入你需要的狀態。另一方面,我發現我後來需要一個類似的過程用於新功能。
儘管存在這些缺點,但我仍然選擇編寫存儲過程邏輯的測試,因爲我們在存儲過程中有相當多的邏輯。你是否使用類似的方法,完全不同的東西(如TSqlUnit),或者你不打擾測試sprocs?
這就是爲什麼存儲過程是相對較少的價值了很多痛苦的原因,一個方便的名單。 – 2010-02-18 16:57:22
我曾經堅守SP陣營,但我的思想已經改變。 CRUD存儲過程只是繁瑣的;使用OR映射器和參數化的內聯查詢存儲過程看起來不那麼重要。 – vfilby 2010-02-18 19:39:16
不幸的SP是我必須使用的,它恐怕不會改變。 – trendl 2010-02-19 08:17:45