Mock測試概念介紹

Mock概念介紹

  • mock的定義(what):

    mock是在測試過程中,對于一些不容易構(gòu)造/獲取的對象,創(chuàng)建一個mock對象來模擬對象的行為

  • 為什么要使用mock(why):
    在做單元測試過程中,經(jīng)常會有以下的場景:

class A 依賴 class B

class B 依賴 class C和class D

class C 依賴 ...

class D 依賴 ...
1.被測對象依賴的對象構(gòu)造復(fù)雜

我們想對class A進行單元測試,需要構(gòu)造大量的class B、C、D等依賴對象,他們的構(gòu)造過程復(fù)雜(體現(xiàn)在構(gòu)造步驟多、耗時較長),這時我們可以利用mock去構(gòu)造虛擬的class B、C、D對象用于class A的測試,因為我們只是想測試class A的行為是否符合預(yù)期,我們并不需要測試依賴對象。

2.被測單元依賴的模塊尚未開發(fā)完成,而被測對象需要依賴模塊的返回值進行測試:

----- 比如service層的代碼中,包含對dao層的調(diào)用,但dao層代碼尚未開發(fā)
----- 比如web的前端依賴后端接口獲取數(shù)據(jù)進行聯(lián)調(diào)測試,但后端接口并未開發(fā)完成
  • 哪些時機和場合需要使用mock(when&where)
1.單元測試/接口測試中測試對象依賴其他對象,這些對象的構(gòu)造復(fù)雜、耗時或者根本無法構(gòu)造(未交付)
2.我們只測試對象內(nèi)部邏輯的質(zhì)量,不關(guān)心依賴對象的邏輯正確性和穩(wěn)定性
  • 是否應(yīng)該在測試中使用mock,投入產(chǎn)出比如何(how much)

我們可以基于以下2個原則去做mock,這樣的mock的投入產(chǎn)出比是最高的

1.不需要對所有的依賴對象/服務(wù)進行mock,只對那些構(gòu)造步驟復(fù)雜、構(gòu)造耗時較長、不穩(wěn)定的依賴對象/服務(wù)進行mock。
2.如果做分層測試(比如分層自動化),高層的測試設(shè)計可以基于以下假設(shè):低層的測試已保證低層對象的質(zhì)量,高層對低層的依賴可以mock,無需關(guān)心所依賴的低層對象的質(zhì)量。
  • Local Mock和Remote Mock
    Local Mock和Remote Mock的區(qū)別在于依賴對象的行為調(diào)用是本地/遠(yuǎn)程調(diào)用

1.Mock本地依賴對象
如果依賴對象的調(diào)用是本地調(diào)用,就屬于Local Mock。EasyMock/Mockito都可以實現(xiàn)對本地依賴對象的Mock。

2.Remote Mock
如果被測對象依賴對象的是一些遠(yuǎn)程服務(wù)(HTTP/RPC服務(wù)),就屬于Remote Mock,Remote Mock一般實現(xiàn)對指定的服務(wù)/接口、客戶端(消費者)進行Mock??梢酝ㄟ^Mock Server等方式去實現(xiàn)。

被測對象和依賴對象/服務(wù)的關(guān)系

Local&Remote Mock
  • LocalMock相當(dāng)于使用Mock對象替換依賴對象。
  • RemoteMock相當(dāng)于使用MockServer替換真實的HTTP/RPC Server。

Mock工具

1.EasyMock
Mockito簡介和代碼示例

2.Mockito
EasyMock簡介和代碼示例

3.PowerMock
PowerMock

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,555評論 19 139
  • 本文作者:張樂。全文約 4199 字,讀完可能需要 7 分鐘。雖然這篇不是以 Python 為示例的,但基本的思路...
    羅義的夏天閱讀 966評論 0 3
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,273評論 6 342
  • P131 muduo的頭文件明確分為客戶可見和客戶不可見兩類。以下是安裝之后暴露的頭文件和庫文件。對于使用mudu...
    SongLiang閱讀 567評論 0 1
  • 【七律】悟道 五十天命曉禪關(guān),險阻艱辛列上仙。 坦蕩胸懷辭舊歲,執(zhí)著信念渡經(jīng)年。 桃花爛漫春光美,紫燕歸來百業(yè)安。...
    泉生彤彤閱讀 394評論 0 1

友情鏈接更多精彩內(nèi)容