2009-07-10 66 views
4

我正在開發基於存儲庫模式的域模型,並且我的所有單元測試都是針對測試存儲庫的。我是否應該針對SQLRepository運行單元測試?

我的問題是:我在什麼時候針對Repository的SQL版本創建集成測試?

我的問題是,從對象(Test Repository)訪問數據的代碼將正常工作。但是,數據庫版本(SQL存儲庫)在封面上如此不同,以至於我的SQL存儲庫中的重要代碼最終將無法工作,並且本身未經測試。我如何確保它按預期工作?我是否錯過了這個過程?

問候。

回答

3

你應該有模擬出庫的測試(因爲它看起來像你),它不查詢數據庫本身,但返回結果,就好像它們一樣。這些是調用存儲庫函數的函數的測試。

但它也是有用的,並建議有測試,檢查數據庫本身,並檢查他們是否返回他們應該。他們也應該是「單元測試」,而不是其他的東西。儘量不要依賴數據庫處於確定狀態,而是建立一個設置來建立數據庫的初始狀態。它們可能會更慢,並且可能不會在每次提交和構建時運行(我的意思是,不運行如果真的需要很多時間的話)。

最後,在你的集成測試中,做所有你應該做的事情。

+1

它的性質的單元測試不會觸及外部系統。因此,針對SQLRepository運行的測試將是集成測試。除此之外,我完全同意這個答案。 – 2009-07-10 19:11:57

0

在我看來,只要你有相應的數據庫代碼,被測試的單元依賴於繼續,並添加使用真實存儲庫的集成測試。僞裝並存儲事情使得單元測試更容易,並且可以讓您專注於代碼的特定方面,而不會因外部依賴關係而感到沮喪並正確設置它們。但是,在一天結束時,您不會運送帶有存根,假貨和嘲笑的產品。發貨的產品具有真正的依賴關係和組件,所有這些都必須一起工作。因此,無論何時運行測試,都需要知道應用程序的某些部分是否可以一起工作。如果我的應用程序的一部分無法保留對數據庫的更改,我希望儘快知道它。因此,如果您的外部依賴項(即數據庫)處於爲您的代碼提供某種級別的功能和價值的級別,請繼續並添加一組集成測試。

請注意,運行集成測試通常需要比單元測試更長的時間。所以你可能只想在CI構建期間運行單元測試。這樣,您可以更快地獲得有關構建和代碼庫健康的反饋。但是,您應該在夜間構建中包含集成測試,以便您瞭解代碼在實際中的工作方式。

相關問題