在我的項目中有很多靜態方法,並且所有內容都會碰到數據庫。我應該爲項目編寫單元測試,但經常遇到,因爲所有的方法都是靜態的,而且他們正在打DB。有什麼辦法可以克服這個問題嗎?對不起,在問題中是抽象的,但我關心的是如何編寫靜態方法和那些命中DB的單元測試。當方法是靜態的,並且在我的項目中,一個方法正在調用同一個類中的其他方法時,MOQ沒有用處。所以在這種情況下,我不能最小化內部方法,因爲兩者都在同一個類中。編寫靜態方法的單元測試
0
A
回答
4
我目前所在的項目比您描述的要糟糕得多。這是一個不可測試系統的藍圖。我認爲有幾個選項,但這一切都取決於你的情況。
寫入集成測試,命中數據庫,並測試多個組件。我知道這並不理想,但至少對你的工作有信心。然後嘗試一次一小步地重構你的代碼(確保採取嬰兒步驟),並圍繞該代碼編寫單元測試。確保您的集成測試繼續通過。如果語義改變,你仍然可以重構你的代際間類型測試。
這可能不像我說的那麼容易,而且需要時間。這就是爲什麼我說這取決於你的情況。
另一種選擇是(我知道很多人使用遺留代碼這樣做)使用其中一種昂貴的隔離框架,例如Isolator,MS Fakes或許可以僞裝那些不可測試的依賴關係。一旦編寫了這些測試,您可以考慮重新考慮代碼以使其更易於測試。
+1
是的,目前我只寫集成測試。我瞭解你的解決方案。我不確定它能幫助我的情況有多遠,但會嘗試實施它們。 – Wilson
相關問題
- 1. 靜態方法和單元測試
- 2. 包含邏輯的靜態工廠方法的單元測試
- 3. 單元測試調用靜態方法的類
- 4. 在內部靜態類中測試void方法的單元
- 5. 谷歌模擬單元測試的靜態方法C++
- 6. 單元測試的靜態方法與回調
- 7. 斯威夫特單元測試模擬類的靜態方法
- 8. React中的單元測試非靜態方法
- 9. java中的單元測試私有和靜態方法
- 10. 使用資源包的單元測試靜態方法
- 11. 單元測試Groovy中的Java類中的靜態方法測試用例
- 12. 靜態方法的調用是單元測試的測試用例嗎?
- 13. 如何調用公共靜態方法在單元測試
- 14. 單元測試代碼調用靜態方法
- 15. Python單元測試:setUpClass使用非靜態方法
- 16. 包裝靜態類/方法以便進行單元測試?
- 17. C#:單元測試靜態類的DI
- 18. 靜態值的單元測試
- 19. 如何編寫單元測試的工廠方法在angularJS
- 20. 如何爲更改數據的方法編寫單元測試?
- 21. 如何編寫異步方法的單元測試用例?
- 22. 需要幫助編寫單元測試需要HttpContext.Current.User的方法
- 23. 如何爲使用nHibernate的方法編寫單元測試
- 24. 如何編寫此方法的單元測試用例?
- 25. 如何編寫此方法的單元測試
- 26. 協助編寫單元測試與犀牛模擬的方法
- 27. 如何對包含靜態方法的方法進行單元測試?
- 28. 單元測試靜態工具類
- 29. 單元測試 - 如何靜態類
- 30. 單元測試,靜態和工廠
聽起來好像你正在編寫產品代碼後試圖編寫單元測試。這本書[與遺留代碼有效地工作](http://amzn.to/Vzxdhd)處理這個問題。 –