-
Mock定義
mock是在測試過程中,對於一些不容易構造/獲取的對象,創建一個mock對象來模擬對象的行爲 -
使用mock
在做單元測試過程中,經常會有以下的場景:
在class A 依賴 class B
class B 依賴 class C和class D
class C 依賴 ...
class D 依賴 ...
1.被測對象依賴的對象構造複雜 我們想對class A進行單元測試,需要構造大量的class B、C、D等依賴對象,他們的構造過程複雜(體現在構造步驟多、耗時較長),這時我們可以利用mock去構造虛擬的class
B、C、D對象用於class A的測試,因爲我們只是想測試class A的行爲是否符合預期,我們並不需要測試依賴對象。2.被測單元依賴的模塊尚未開發完成,而被測對象需要依賴模塊的返回值進行測試:
----- 比如service層的代碼中,包含對dao層的調用,但dao層代碼尚未開發
----- 比如web的前端依賴後端接口獲取數據進行聯調測試,但後端接口並未開發完成
- 哪些時機和場合需要使用mock
1.單元測試/接口測試中測試對象依賴其他對象,這些對象的構造複雜、耗時或者根本無法構造(未交付)
2.我們只測試對象內部邏輯的質量,不關心依賴對象的邏輯正確性和穩定性
4.mock分類
單元測試 基於代碼層面的mock
接口測試 基於網絡接口層的mock
5.mock原理
http 基於代理或host的方式
rcp
6.單元測試mock的框架
基於JAVA
- EasyMock
- Mockito
- powerMockito
7.Mock方案
搭建服務
自定義URL與替換數據規則
通過代理,host解析等方式改變網絡訪問目標
無需修改代碼即可直接使用