Java單元測試(mock+junit)


進入新公司之后,需要技術支持一下接口單元測試。

了解了一下mock和junit具體是干什么的,以及mock和junit有沒有關系:

目前應用比較普遍的java單元測試工具 junit4+Mock(Mockito /jmock / powermock)或Stub(用得較少,一般不推薦)

問題:為什么需要mock或stub?它與junit什么關系?

在做單元測試的時候,我們會發現我們要測試的方法會引用很多外部依賴的對象,比如:(發送郵件,網絡通訊,記錄Log, 文件系統 之類的)。 而我們沒法控制這些外部依賴的對象。  為了解決這個問題,我們需要用到Stub和Mock來模擬這些外部依賴的對象,從而控制它們。

JUnit是單元測試框架,可以輕松的完成關聯依賴關系少或者比較簡單的類的單元測試,但是對於關聯到其它比較復雜的類或對運行環境有要求的類的單元測試,模擬環境或者配置環境會非常耗時,實施單元測試比較困難。而這些“mock框架”Mockito 、jmock 、 powermock、EasyMock),可以通過mock框架模擬一個對象的行為,從而隔離開我們不關心的其他對象,使得測試變得簡單。(例如service調用dao,即service依賴dao,我們可以通過mock dao來模擬真實的dao調用,從而能達到測試service的目的。)

模擬對象(Mock Object)可以取代真實對象的位置,用於測試一些與真實對象進行交互或依賴於真實對象的功能,模擬對象的背后目的就是創建一個輕量級的、可控制的對象來代替測試中需要的真實對象,模擬真實對象的行為和功能。

 

了解過后,查看項目中的mock發現與真正的mock框架不一樣。截圖如下:

項目中是使用的是spring集成自帶的mock實現模擬對象。

 

 

感謝原文博主:https://www.cnblogs.com/wuyun-blog/p/7081548.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM