2013-04-20 152 views
7

我是使用SQL數據庫的新手,但遇到了測試我的數據庫的問題。出於安全原因,任何查詢或更新都是通過存儲過程完成的。SQL單元測試存儲過程

同行建議我使用存儲過程來測試其他存儲過程。這是對我的存儲過程進行單元測試的好的或不好的解決方案,以確保他們正在做他們應該做的事情嗎?

+1

另一種測試數據庫存儲過程的方法是使用[DBUnit](http://www.dbunit.org/) – flup 2013-04-21 00:21:19

回答

8

我發現使用Visual Studio的最佳解決方案: Visual Studio Unit Testing

它允許你創建SQL存儲過程的單元測試,你還可以使用正則表達式填充數據庫 - 非常酷的東西。

1

我不知道哪個工具可以對SQL語句或存儲過程執行單元測試。 我通常會編寫SQL腳本來爲此做一個測試。

  1. 創建一個空數據庫,當然,結構與原來的一樣。
  2. 準備數據(從原始數據庫導入一些數據)。
  3. 調用存儲過程。
  4. 然後查看數據是否正確。

有時候寫一些斷言語句,如

IF EXISTS (SELECT * FROM XX INNER JOIN XXX ON XXXXXXXX WHERE XXX=XXX) 
    RAISEERROR XXXXXX 

如果一些例外或錯誤拋出,那麼你可以檢查存儲過程。

但是這是浪費時間。

我通常會在大多數時間檢查存儲過程的所有執行路徑,並只測試主要的錯誤預期點。

1

我一直在使用TST作爲SQL Server的測試框架,結果非常好。 它運行良好,我甚至可以將它作爲Team City中CI環境的一部分進行整合。

關鍵是要非常小心如何設置您的測試數據。無論您選擇哪種測試框架,都一定要應用測試數據生成器模式。如果你不這樣做,你可能會很快得到一些測試重構問題。

5

除了DbUnitNUnit,如果你喜歡寫tsql,你可以使用tSQLttSQLt是一個用tsql編寫的用於爲tsql編寫單元測試用例的開源框架。

1

來自dbunit.org的DbUnit是一個很好的框架。另一個很棒的工具是TSqlUnit和tsqlt.org的tsqlt。