我們正在考慮使用tSQLt進行SQL Server單元測試,但在此之前,我們需要了解是否要浪費我們的時間來嘗試使用我們的設置。我問這個的原因是因爲我們有兩個數據庫,其中一個非常「正常」(這是我們的生產數據庫),另一個是「API」數據庫,通過存儲過程提供對數據庫的限制訪問「在訪問API數據庫的用戶帳戶和生產數據庫的模擬帳戶之間。生產數據庫中的表格不是直接訪問,而是通過同義詞訪問。交易提供來自API數據庫中的「入口點」存儲過程。可能會導致tSQLt問題的SQL功能
有兩個主要的事情,我們希望能夠測試;
(1)對象的安全權限,當我們「忘記」在構建之間正確設置安全訪問時,處理共享對象時可能遇到問題。 (2)API存儲過程/函數。我認爲我們可以相對獨立地測試一些函數,但我看不出存儲過程如何輕鬆工作。
- tSQLt是否支持安全權限測試?
- 我看到有跨數據庫測試和同義詞的問題,但信息是相當歷史性的。現在解決這些問題了嗎?
- 爲什麼tSQLt需要CLR權限?
- tSQLt「代碼」是否必須安裝在要測試的數據庫上,還是可以在同一實例上的數據庫上運行它?
- 列表項
如果你要在你的生產數據庫運行'test',我想你並不需要使用'tSQLt'。您可以創建一個T-SQL語句來檢測錯誤並使用作業或手動運行它。 'tSQLt'框架只是一個可用於測試的包裝器(包含T-SQL過程/函數和少量CLR)。爲了使用它,你應該啓用CLR,並且你應該在數據庫中「部署/創建」這些對象。我相信,對於你的情況,你最好開發一個測試程序。 – gotqn
我應該澄清,「生產」數據庫是我們的開發測試服務器上的生產數據庫的副本,而不是實際的數據庫! 我們有一個web服務,可以與API數據庫進行交談,與「生產」數據庫交談。該「生產」數據庫通常由部署在citrix上的應用程序使用。 –
基本上,'tSQLt'將能夠將執行結果與預定義的結果進行比較。例如,你需要編寫一個代碼來檢查用戶A是否擁有對象B的權限,然後使用'tSQLt'它會引發或不引發錯誤(取決於你的情況)。所以,你需要做「努力」的工作,如果你編寫了「搜索問題」的T-SQL語句,你可以簡單地執行它。此外,單元測試是針對單獨對象的測試結果,在您的情況下,我認爲您將使用更復雜的業務邏輯。 – gotqn