我在Google上搜索了一些很好的答案/帖子,並理解了整體概念。我有一個現有的框架(設計不是很好),TDD是一個後來想寫一些NUNIT測試裝置。我可以在不改變現有代碼庫的情況下在現有代碼庫上使用IOC嗎?或者我們從頭開始設計應用程序時使用IOC?測試驅動開發:控制反轉(IOC)
回答
我使用這種技術轉換的遺留代碼進行依賴注射美容:如果我創建了一個類只有一個對象
- ,使它一個字段並在構造函數中創建它。
- 如果我創建了多個對象,爲該對象創建一個工廠並在構造函數中創建工廠。
- 在對象上放置接口(我喜歡「IDoThisForYou」風格,因爲它讓我能夠輕鬆理解類的角色,但無論適用於您)。
- 級聯構造函數 - 使一個構造函數新建對象,並通過接口將它們傳遞給另一個。
現在你可以在你的測試中模擬和DI接口。實際的級聯足夠簡單,您可以通過檢查獲得。最終你會到達可以使用容器的地步,然後你將刪除第一個構造函數;這是實現這一目標的第一步。
(不要用大量的數據模擬出的域對象 - 這是不值得的。)
祝你好運!
它不必從頭開始,但很明顯,你會構建的東西,讓國際奧委會,如果你確實非常痛苦,
但它可以在....這取決於如何去耦修補你的系統是,這可能或可能不是一個大工作。基本上它是一個對象創作模式,所以它隻影響創作點......如果這種做法在整個地方都能完成,那麼它將需要一些清理。
我會先從單元測試開始。擔心國際奧委會作爲第二個問題,它實際上並不需要做TDD
依賴注入不一定需要編寫測試,但對TDD和單元測試來說非常重要 - 強調「單元」。我同意集成一個IoC *容器*是次要的問題,因爲它是DI的一個工具,但是對於可測試性的一些重構措施在設計代碼庫時可能不可避免,而不考慮DI/IoC。 – Jay 2010-06-23 16:17:29
我不完全同意這一點。我認爲這對某種風格的應用來說是真實的。一般來說,這種類型,你看到最有聲音的程序員,這是數據庫支持的業務/網絡應用程序。我發現像嵌入式應用程序這樣的東西幾乎不需要它(儘管如果你真的想要的話,你仍然可以使用它)。通常你需要的只是硬件層的存根。 – 2010-06-23 21:21:26
- 1. 測試驅動開發 - WPF
- 2. 測試驅動開發
- 3. 測試驅動開發javascript
- 4. 測試驅動開發書
- 5. Android測試驅動開發
- 6. 版本控制和測試驅動開發
- 7. 測試驅動開發/集成測試的RIA開發
- 8. 春季測試驅動開發嘲諷
- 9. RSpec的測試驅動開發
- 10. 測試驅動開發 - 模擬對象
- 11. CakePHP中的測試驅動開發
- 12. SQL代碼的測試驅動開發
- 13. 測試驅動開發和接口
- 14. 測試驅動開發:無效方法
- 15. REST API的測試驅動開發
- 16. 測試驅動開發敏捷?
- 17. Flash中的測試驅動開發
- 18. Python中的測試驅動開發
- 19. Liferay的測試驅動開發
- 20. JavaScript庫的測試驅動開發
- 21. 什麼是測試驅動開發?
- 22. Swift中的測試驅動開發
- 23. MSBuild任務的測試驅動開發
- 24. 測試驅動的開發問題
- 25. ASP.NET MVC和測試驅動開發
- 26. Visual Studio 2010和測試驅動開發
- 27. 測試驅動的開發過程
- 28. 測試驅動開發:asp.net mvc
- 29. Python測試驅動開發 - 第6章
- 30. 是測試面向發展對測試驅動開發
+1不模擬域對象 – Gutzofter 2010-06-25 05:47:53