2016-11-09 81 views
0

我們正在考慮使用tSQLt進行SQL Server單元測試,但在此之前,我們需要了解是否要浪費我們的時間來嘗試使用我們的設置。我問這個的原因是因爲我們有兩個數據庫,其中一個非常「正常」(這是我們的生產數據庫),另一個是「API」數據庫,通過存儲過程提供對數據庫的限制訪問「在訪問API數據庫的用戶帳戶和生產數據庫的模擬帳戶之間。生產數據庫中的表格不是直接訪問,而是通過同義詞訪問。交易提供來自API數據庫中的「入口點」存儲過程。可能會導致tSQLt問題的SQL功能

有兩個主要的事情,我們希望能夠測試;

(1)對象的安全權限,當我們「忘記」在構建之間正確設置安全訪問時,處理共享對象時可能遇到問題。 (2)API存儲過程/函數。我認爲我們可以相對獨立地測試一些函數,但我看不出存儲過程如何輕鬆工作。

  • tSQLt是否支持安全權限測試?
  • 我看到有跨數據庫測試和同義詞的問題,但信息是相當歷史性的。現在解決這些問題了嗎?
  • 爲什麼tSQLt需要CLR權限?
  • tSQLt「代碼」是否必須安裝在要測試的數據庫上,還是可以在同一實例上的數據庫上運行它?
  • 列表項
+0

如果你要在你的生產數據庫運行'test',我想你並不需要使用'tSQLt'。您可以創建一個T-SQL語句來檢測錯誤並使用作業或手動運行它。 'tSQLt'框架只是一個可用於測試的包裝器(包含T-SQL過程/函數和少量CLR)。爲了使用它,你應該啓用CLR,並且你應該在數據庫中「部署/創建」這些對象。我相信,對於你的情況,你最好開發一個測試程序。 – gotqn

+0

我應該澄清,「生產」數據庫是我們的開發測試服務器上的生產數據庫的副本,而不是實際的數據庫! 我們有一個web服務,可以與API數據庫進行交談,與「生產」數據庫交談。該「生產」數據庫通常由部署在citrix上的應用程序使用。 –

+0

基本上,'tSQLt'將能夠將執行結果與預定義的結果進行比較。例如,你需要編寫一個代碼來檢查用戶A是否擁有對象B的權限,然後使用'tSQLt'它會引發或不引發錯誤(取決於你的情況)。所以,你需要做「努力」的工作,如果你編寫了「搜索問題」的T-SQL語句,你可以簡單地執行它。此外,單元測試是針對單獨對象的測試結果,在您的情況下,我認爲您將使用更復雜的業務邏輯。 – gotqn

回答

1

不tSQLt支持安全許可測試?

間接。您可以使用ExpectException和ExpectNoException功能來測試給定帳戶是否具有訪問特定對象的權限。

同義詞

據我所知,你仍然不能僞造指向遠程對象的代名詞。雖然你可能有更多運氣僞造觀點。

爲什麼tSQLt需要CLR權限?

如果你的意思是TRUSTWORTY,這不再需要(http://tsqlt.org/748/tsqlt-v1-0-5873-27393-release-notes/)。如果你的意思是「爲什麼它需要CLR」,這是因爲有一些操作對於T-SQL本身來說是非常困難或不可能的;看看早期的tsqlunit勇敢的嘗試。

是否tSQLt「代碼」必須這將測試針對

是在數據庫上安裝。


我想補充的是,如果你要在兩個數據庫之間測試交互,吹毛求疵的區別的部門,可以沿着地說,這是不是真的單元測試。編寫普通的舊NUnit/MSTest/whateverUnit測試可能會更容易。在過去,我將Nunit和Dapper(stackoverflow的名氣)放在一起進行了輕量級的數據庫測試,結果有一些運氣。

相關問題