Junit mockito解耦合測試

Mock測試是單元測試的重要方法之一。

1、相關(guān)網(wǎng)址

官網(wǎng):http://mockito.org/

項目源碼:https://github.com/mockito/mockito

api:http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html

2、什么是Mock測試

Mock 測試就是在測試過程中,對于某些不容易構(gòu)造(如 HttpServletRequest 必須在Servlet 容器中才能構(gòu)造出來)或者不容易獲取比較復(fù)雜的對象(如 JDBC 中的ResultSet 對象),用一個虛擬的對象(Mock 對象)來創(chuàng)建以便測試的測試方法。

Mock 最大的功能是幫你把單元測試的耦合分解開,如果你的代碼對另一個類或者接口有依賴,它能夠幫你模擬這些依賴,并幫你驗證所調(diào)用的依賴的行為。

當(dāng)我們需要測試A類的時候,如果沒有 Mock,則我們需要把整個依賴樹都構(gòu)建出來,而使用 Mock 的話就可以將結(jié)構(gòu)分解開,像下面這樣:

只需提供mock B 和mock C 的返回即可的,不需要知道其底層具體是怎么實現(xiàn)的。

3、mock使用的場景和好處

  • 真實的對象具有不確定的行為,產(chǎn)生不可預(yù)測效果。(如:股票行情,天氣預(yù)報),我們經(jīng)常會遇到測試的時候需要去數(shù)據(jù)庫中查詢某些數(shù)據(jù),但是未知的,就算是知道的,假如有一天數(shù)據(jù)被刪除了或者被修改了,很難進(jìn)行回歸測試。
  • 真實對象很難被創(chuàng)建的,真實對象的某些行為很難被觸發(fā)。
  • 真實對象實際上還不存在的。如:某個接口依賴其他系統(tǒng)的服務(wù)或者該接口還沒開發(fā)出來。我們就可以使用mock假設(shè)其返回的數(shù)據(jù)進(jìn)行測試。而不用等待其開發(fā)完接口,我們再進(jìn)行測試。提高開發(fā)的效率

4、一些特點