1. 程式人生 > >Jmockit之mock特性詳解

Jmockit之mock特性詳解

至少 順序 extra xpl replay int 階段 es2017 matcher

本文是Jmockit學習過程中,根據官網所列的工具特性進行解讀。

1、調用次數約束(Invocation count constraints)

可以通過調用計數約束來指定預期和/或允許匹配給定期望的調用數。

2、記錄嚴格期望(Recording strict expectations)

一般記錄在“new Expectations(){...}”塊中的期望是比較常規的。 這意味著他們指定的調用預計在重播階段至少會發生一次; 而且它們可能會發生不止一次,並且以與其他記錄的期望不同的順序發生; 另外,與任何記錄的期望不匹配的調用也同樣允許以任何數量和任何順序發生。但是如果沒有調用與給定的記錄期望匹配,則在測試結束時拋出“Missing invocation”錯誤,從而導致測試失敗,拋出異常類似如下信息:

技術分享

嚴格期望:當記錄以後,僅允許在重放期間完全匹配記錄(在明確指定的配額內,在需要時)進行調用,匹配調用數(默認情況下只有一個) 並按照它們發生的順序。 在重播期間發生但未能匹配記錄的嚴格期望的調用被認為是意外的,導致立即的“unexpected invocation”錯誤,從而導致測試失敗。

非嚴格期望:顧名思義,對期望沒有嚴格要求,mock的方法可以不調用。

1、明確驗證(Explicit verification)

2、部分模擬(Partial mocking)

3、沒有方法調用從記錄切換到重播(No method call to switch from record to replay)

4、沒有額外的代碼用於隱式驗證(No extra code for implicit verification)

5、沒有額外的“準備測試”代碼(No extra "prepare for test" code)

6、不需要使用@RunWith註釋或基礎測試類(No need to use @RunWith annotation or base test class)

7、void和非void方法之間的語法一致(Consistent syntax between void and non-void methods)

8、參數匹配僅適用於某些參數(Argument matchers for some parameters only)

9、基於值類型的屬性使參數更容易匹配(Easier argument matching based on properties of value objects)

10、級聯模擬(Cascading mocks)

11、支持模擬多個接口(Support for mocking multiple interfaces)

12、支持模擬註釋類型(Support for mocking annotation types)

13、部分期望(Partially ordered expectations)

14、模擬構造函數和final / static / native / private方法(Mocking of constructors and final/static/native/private methods)

15、模擬/打樁的聲明性應用在整個測試類(Declarative application of mocks/stubs to whole test classes)

16、自動註入模擬(Auto-injection of mocks)

17、模擬”新的”對象(Mocking of "new-ed" objects)

18、支持模擬枚舉類型(Support for mocking enum types)

19、測試類的聲明式模擬(模擬領域)(Declarative mocks for the test class (mock fields))

===================================================================

更多原創測試技術文章同步更新到微信公眾號 :三國測,敬請掃碼關註個人的微信號,感謝!

技術分享

感謝閱讀,作者原創技術文章,轉載請註明出處

Jmockit之mock特性詳解