簡體   English   中英

用Java最好。 模擬接口或模擬類?

[英]Which is best in Java; Mocking interfaces or mocking classes?

首先,讓我透露一下我不是Java開發人員,我目前使用C#進行開發,因此我對Java所做的任何假設或聲明都可能是錯誤的或不正確的。

在帶有模擬對象的.Net中編寫單元測試時,我們有99%的時間模擬了接口。 可以模擬類,但是您將只能控制虛擬(因此可模擬)方法。

在Java中,由於默認情況下方法是虛擬的,因此我可以想象模擬類與模擬接口相同,因為一切都將被模擬行為所覆蓋。

因此,還是在Java中依賴於接口(並因此在單元測試中模擬接口)仍然是最佳實踐,還是大多數Java開發人員都使用類來減少類型的數量(不需要接口)?

實際上,我進行了相反的轉換-即在Java中進行模擬,然后轉換為csharp。 如果具體的確有接口,我傳統上工作的公司仍然會模擬接口。 否則,我們會根據您指定的原因對實際的類進行模擬。 因此,根據我的經驗,由於明顯的依賴關系原因,我們對接口進行了優先處理。

對於Java,我們選擇了Mockito模擬框架,並且我認為它的工作非常漂亮。

http://code.google.com/p/mockito/

我也會在Java中模擬接口。 我認為這就是全部主意:客戶端只知道接口引用類型。 您可以在其后注入一個模擬實現,而客戶端則是最明智的選擇。

我推薦的另一個好的框架是EasyMock。

http://easymock.org/

它的學習曲線很低,使用時我沒有任何問題。

嘗試Mockito http://code.google.com/p/mockito/ 非常簡單,但功能仍然強大!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM