2017-09-22 150 views
0

我已經在JUnits的EasyMocking中工作了很久。我對此非常舒服,但現在我想知道EasyMocks與Jmockits的不同之處。我試着通過他們的文檔,我發現語法有點不同。但我無法弄清楚他們的表演是否有任何不同。 任何人都可以幫我弄清楚什麼使得他們兩個都比另一個更好? JMockit中是否存在其他特殊元素? 在此先感謝...Jmockit與EasyMock有什麼不同?哪個更好用?

回答

0

你可以找到一個博客帖子大約它們之間的差異(也的Mockito!)在這裏:http://www.baeldung.com/mockito-vs-easymock-vs-jmockit

雖然他們都有不同的語法和不同的工作方式,你應該能夠實現您在嘲笑任何框架方面所需的任何內容。

+0

通過這些文檔,發現了easyMocks的幾個優點。 其真實和明顯的是,jmockit在編寫測試用例時引入了一個結構,部分嘲諷在這裏更加合乎邏輯。同樣的參數匹配也宣告jmockit成爲贏家。但是,所有這些並不是說有人必須開始使用jmockit而不是easymocks。 這兩個框架的用法有什麼大的區別? 像是有沒有easymock不能做的其他功能,但其他可以嗎? – akshit

1

JMockit和EasyMock/jMock/Mockito/PowerMock有很多不同之處。 這些是主要的:

  1. 進行集成測試支持:JMockit支持的out-of-container integration testing approach,類似於什麼Spring Test module提供,而且還支持Java EE。其他模擬庫僅支持模擬對象的隔離單元測試。
  2. A "faking" API(另請參閱xUnit Patterns)以及mocking API。其他每個模擬庫都只有一個模擬API。
  3. 除了「模擬物體」之外,還全力支持「嘲弄」。其他嘲諷庫使用它們創建的模擬對象,並且需要以某種方式傳遞給待測代碼。使用EasyMock/jMock/Mockito,static方法,構造函數和「new -ed」對象根本不能被模擬。 PowerMock也支持完全模擬,但仍然專注於模擬對象(具體來說,新編的對象必須通過whenNew錄製被模擬對象「替換」,而使用JMockit,測試可以簡單地聲明@Mocked字段)。
  4. 支持嘲笑/僞造final類和方法。只有PowerMock也提供這種支持。 Mockito最近添加了一個「內聯模擬器」,它增加了對final的支持,但默認情況下它不是主動的,可能不如可靠。
  5. 支持對未指定的子類和接口實現進行嘲諷/僞造(其中測試僅聲明基本類型被嘲笑/僞造)。
  6. 在嘲笑API,在具有多個參數的方法的期望可記錄/使用參數匹配器(如anyString等)僅用於一些參數驗證,而其他嘲笑API需要這種匹配器用於單個參數。
  7. 同樣在嘲諷API中,預期可以明確驗證在被測試的代碼被執行後,就像在Mockito中一樣。 EasyMock/jMock不支持此驗證模型。

至於性能,嘲笑與JMockit一個類型可能具有更高的運行時開銷(通過類重新定義完成)相比時,與創建一個模擬對象的EasyMock/JMock的/的Mockito(通過子類定義完成) ,並且與PowerMock相比較低(通過定製類加載器上的類別定義完成)。但是,如果有很多嘲笑正在進行,您應該只注意到性能的差異,這很可能表示過度使用嘲諷。

相關問題