[英]Which is best in Java; Mocking interfaces or mocking classes?
首先,讓我透露一下我不是Java開發人員,我目前使用C#進行開發,因此我對Java所做的任何假設或聲明都可能是錯誤的或不正確的。
在帶有模擬對象的.Net中編寫單元測試時,我們有99%的時間模擬了接口。 可以模擬類,但是您將只能控制虛擬(因此可模擬)方法。
在Java中,由於默認情況下方法是虛擬的,因此我可以想象模擬類與模擬接口相同,因為一切都將被模擬行為所覆蓋。
因此,還是在Java中依賴於接口(並因此在單元測試中模擬接口)仍然是最佳實踐,還是大多數Java開發人員都使用類來減少類型的數量(不需要接口)?
實際上,我進行了相反的轉換-即在Java中進行模擬,然后轉換為csharp。 如果具體的確有接口,我傳統上工作的公司仍然會模擬接口。 否則,我們會根據您指定的原因對實際的類進行模擬。 因此,根據我的經驗,由於明顯的依賴關系原因,我們對接口進行了優先處理。
對於Java,我們選擇了Mockito模擬框架,並且我認為它的工作非常漂亮。
我也會在Java中模擬接口。 我認為這就是全部主意:客戶端只知道接口引用類型。 您可以在其后注入一個模擬實現,而客戶端則是最明智的選擇。
嘗試Mockito http://code.google.com/p/mockito/ 。 非常簡單,但功能仍然強大!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.