- Mock像裝飾對象一樣很容易使用
- 使用Mock可以很容易地模擬緩存拋出的異常
- 通過使用Mock,我們能驗證裝飾和被裝飾對象之間的正確交互――即IgnoreExceptionsCacheManagerDecorator 的get(String, Object)方法調用被裝飾對象的get(String, Object)方法。
實際上,當兩個或更多對象之間的交互和這種交互的最終結果一樣重要時,測試裝飾是Mock測試許多應用中的一種。Mock的用法必須逐一確認(如測試Adapter模式的特定實現時)。裝飾僅是安全引入Mock的一種特殊情況。
結束語
獨立代碼測試是一項具有挑戰性的工作。通常,非平凡代碼需要依賴一些協作軟件,而這些協作軟件是無法在測試中輕易或快速建立的。開發人員,甚至是最積極的開發人員,經過花費大量時間編寫,維護和運行測試后都會失去信心。為了避免測試的減少,Mock對象提供了一種機制,通過模擬那些真實世界中的難以使用的和開銷昂貴的依賴關系來進行完全獨立的代碼測試。雖然Mock能簡化單元測試的創建,但它們不能代替功能測試和集成測試。Mock需要謹慎使用;濫用Mock會帶來諸多問題,比如隱藏的集成問題、混亂、代碼測試的重復、不必要的代碼和測試的脆弱性。
參考資料
- Endo-Testing: Unit Testing with Mock Objects,作者為Tim Mackinnon、Steve Freeman和Philip Craig
- Mocks Aren't Stubs,作者為Martin Fowler
- 使用MockEJB簡化EJB測試(中文版),作者為Eoin Woods和Alexander Ananiev(Dev2Dev,2005),介紹了如何使用EJB測試中使用Mock。
- Design Patterns: Elements of Reusable Object-Oriented Software,作者為Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides
- Head First Design Patterns,作者為Eric Freeman、Elisabeth Freeman、Kathy Sierra、Bert Bates
- JUnit in Action,作者為Vincent Massol和Ted Husted
- Mock Objects: the Good, the Bad and the Ugly,作者為Alex Ruiz
- FEST (Fixtures for Easy Software Testing),EasyMockTemplate的主頁
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/