簡體   English   中英

我是否應該對我的SQLRepository運行單元測試?

[英]Should I run Unit Tests against my SQLRepository as well?

我正在開發一個基於存儲庫模式的域模型,作為TDD的一部分,我的所有單元測試都是針對測試存儲庫的。

我的問題是:我在什么時候針對存儲庫的SQL版本創建集成測試?

我擔心的是從對象(Test Repository)訪問數據的代碼可以正常工作。 但是數據庫版本(SQL Repository)的內容是如此不同,以至於我的SQL資源庫中的重要代碼最終無法正常運行並且本身未經過測試。 我如何確保它按預期工作? 我錯過了一些關於這個過程的東西嗎

問候。

您應該擁有模擬存儲庫的測試(就像您看到的那樣),它不會查詢數據庫本身,而是返回結果,就像它們那樣。 這些是調用存儲庫函數的函數的測試。

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

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

在我看來,只要你有相應的數據庫代碼,你的被測單元依賴於繼續,並添加使用真實存儲庫的集成測試。 偽造和剔除事物使單元測試更容易,並使您可以專注於代碼的特定方面,而不會受到外部依賴性的挫敗並正確設置它們。 但是,在一天結束時,您不會發送帶有存根,假貨和嘲笑的產品。 隨附的產品具有真正的依賴關系和組件,所有這些都必須協同工作。 因此,無論何時運行測試,您都需要知道應用程序的某些部分是否在一起工作。 如果我的應用程序的一部分無法持久更改數據庫,我想盡快知道它。 因此,如果您的外部依賴項(在您的情況下是數據庫)處於為代碼提供某種級別的功能和價值的級別,請繼續添加一組集成測試。

請注意,運行集成測試通常需要比單元測試更長的時間。 因此,您可能希望在CI構建期間僅運行單元測試。 這樣,您可以更快地獲得有關構建和代碼庫運行狀況的反饋。 但是,您應該在每晚構建中包含集成測試,以便了解代碼在實際中的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM