Dot-Net
強制單元測試不應該與實時數據庫/網路服務對話是否合理?
我的團隊繼續在我們編寫的單元測試中發現越來越多的價值。我們通常不會對應用程序的數據訪問層進行單元測試,因為它們不包含“邏輯”。根據我的經驗,由於讓開發人員編寫與實時數據庫(或 Web 服務)對話的單元測試,我們遇到了嚴重的性能問題和不可重現的錯誤,因此越來越多的開發人員正在創建向這些數據庫提供數據的模擬單元測試。
採用這種方法提高了測試的速度並隔離了邏輯測試,而不是同時測試連接/檢索。我想知道這聽起來是否合理,可以作為編碼標準執行。關於我缺少的單元測試實時數據庫/網路服務的優點/缺點是什麼?
應用程序的數據庫和 Web 服務部分也應該進行測試,但根據定義,它們不會是單元測試,而是集成測試。這些測試將與您的單元測試分開並且執行頻率較低,但會提供非常有價值的早期缺陷檢測。
**我通常將單元測試視為單獨測試單個類或模組的東西。**因此,我盡量避免讓單元測試了解實時系統或外部資源——我傾向於在單元測試中避免這種依賴關係——或者模擬它們。
**集成測試是另一回事。**集成測試應避免模擬資源,因此可能確實需要實時數據庫或服務來支持它。您所描述的聽起來可能是集成測試而不是單元測試。
在某些情況下,最好模擬集成測試所需的服務——但如果可能,我會盡量避免這種情況,因為我不相信模擬能夠反映真實事物的行為。對我來說,集成測試實際上應該測試系統中組件的集成。