<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Mock工具介紹

          共 3492字,需瀏覽 7分鐘

           ·

          2020-12-01 21:51

          什么是Mock

          ????如果將mock單獨翻譯過來,其意義為?“虛假、虛設(shè)”,因此在軟件開發(fā)領(lǐng)域,我們也可以將其理解成?“虛假數(shù)據(jù)”,或者?“真實數(shù)據(jù)的替身”


          為什么使用Mock

          1.解除依賴,團(tuán)隊并行工作

          接口尚未開發(fā)完成,在系統(tǒng)交互雙方定義好接口之后,我們可以提前進(jìn)行開發(fā)和測試,并不依賴上游系統(tǒng)的開發(fā)實現(xiàn)。


          2.開啟TDD模式,即測試驅(qū)動開發(fā)

          單元測試是TDD的基石,當(dāng)接口定義好后,測試人員就可以創(chuàng)建一個Mock,把接口添加到自動化測試環(huán)境中,提前創(chuàng)建測試。


          3.隔離系統(tǒng)

          通過編寫Mock,隔離請求操作(Get、Post)對于數(shù)據(jù)庫中數(shù)據(jù)的污染。


          4.提升測試覆蓋度

          通過Mock接口返回的不同狀態(tài),來查看系統(tǒng)是否能夠正常影響,提升測試的覆蓋度。


          5.方便演示

          通過使用Mock模擬數(shù)據(jù)接口,我們即可在只開發(fā)了UI的情況下,無須服務(wù)端的開發(fā)就可以進(jìn)行產(chǎn)品的演示。


          除此之外,Mock可以加深我們對測試的理解,深入明白測試“輸入”和“輸出”的不同表達(dá)形式,同時還能提高自身技術(shù),脫離功能測試對于開發(fā)的依賴。


          市面上常見的Mock工具

          市面上常見的Mock分為單元測試級別的Mock工具和接口測試級別的Mock工具

          單元測試級別的mock工具

          單元測試級別的Mock工具有Easymock、jMock、Mockito、Unitils Mock、PowerMock、JMockit等。


          EasyMock


          EasyMock 是一套用于通過簡單的方法對于給定的接口生成 Mock 對象的類庫。它提供對接口的模擬,能夠通過錄制、回放、檢查三步來完成大體的測試過程,可以驗證方法的調(diào)用種類、次數(shù)、順序,可以令 Mock 對象返回指定的值或拋出指定異常。通過 EasyMock,我們可以方便的構(gòu)造 Mock 對象從而使單元測試順利進(jìn)行。


          JMock


          JMock是一個使用模擬對象機(jī)制測試Java代碼的開發(fā)包。模擬對象(Mock Object)可以取代真實對象的位置,用于測試一些與真實對象進(jìn)行交互或依賴于真實對象的功能,模擬對象的背后目的就是創(chuàng)建一個輕量級的、可控制的對象來代替測試中需要的真實對象,模擬真實對象的行為和功能,方便我們的測試。JMock就是這種機(jī)制的實現(xiàn),使用JMock我們可以快速創(chuàng)建模擬對象,定義交互過程中的約束條件等,同時JMock也是易擴(kuò)展的,你可以很方便添加自定義的需求。?


          Mockito


          Mockito 無需準(zhǔn)備昂貴的前期啟動。他們的目標(biāo)是透明的,讓開發(fā)人員專注于測試選定的行為。

          Mockito 擁有的非常少的 API,所有開始使用 Mockito,幾乎沒有時間成本。因為只有一種創(chuàng)造 mock 的方式。只要記住,在執(zhí)行前 stub,而后在交互中驗證。你很快就會發(fā)現(xiàn)這樣 TDD java 代碼是多么自然。

          單元測試Mock工具對比

          Features:

          Feature

          EasyMock

          jMock

          Mockito

          UnitilsMock

          PowerMock(EasyMock)

          PowerMock(Mockito)

          JMockit

          Invocation count constraints(調(diào)用數(shù)限制)
          Recording strict expectations(記錄嚴(yán)格的預(yù)期結(jié)果)


          Explicit verification(顯式驗證)


          Partial mocking(部分mock)
          Easier argument matching based on properties of value objects(基于值對象屬性的簡化參數(shù)匹配)
          Cascading mocks(級聯(lián)mock)


          Mocking of multiple interfaces(多接口mock)



          Mocking of annotation types(注釋類型mock)

          Partially ordered expectations




          Auto-injection of mocks(mock的自動注入)


          Mocking of enums(枚舉的mock)



          Declarative mocks for test methods (mock parameters)





          Mocking of unspecified implementation classes(未實現(xiàn)接口類的mock)





          “Duck typing” fakes for integration tests





          Total4/144/148/146/145/149/1414/14


          Qualities:

          Feature

          EasyMock

          jMock

          Mockito

          UnitilsMock

          PowerMock(EasyMock)

          PowerMock(Mockito)

          JMockit

          Argument matchers for some parameters only, not all




          No method call to switch from record to replay(切換記錄回放時無方法調(diào)用)


          No extra code for implicit verification(隱式驗證沒有額外代碼)

          N/AN/A
          N/A
          No extra “prepare for test” code(沒有額外的”prepare for test”代碼)

          No need to use @RunWith annotation or base test class(不需要用@runwith注解和測試基類)


          Consistent syntax between void and non-void methods(空和非空方法的語法一致)



          Mocking of constructors and final/static/private methods(構(gòu)造函數(shù)、final、static和private方法的mock)



          Mocking of “new-ed” objects(“new-ed”對象的mock)



          Support for covariant return types





          Single jar file in the classpath is sufficient to use mocking API(在classpath中的單個jar文件就能夠使用mockAPI


          N/AN/A
          Total2/103/104/94/92/93/810/10


          接口測試級別的mock工具

          接口測試級別的Mock工具有RAP、Yapi、Moco等。


          RAP


          RAP是阿里團(tuán)隊出的一款接口管理工具,幫助開發(fā)人員有效的管理接口文檔。包括阿里集團(tuán)在內(nèi)的三百五十多個企業(yè)都在使用RAP管理重要的接口文檔。

          • Web接口管理工具,接口自動化,MOCK數(shù)據(jù)自動生成,自動化測試

          • 能夠通過分析接口結(jié)構(gòu)自動生成Mock數(shù)據(jù)、校驗真實接口的正確性

          • 阿里產(chǎn)品,功能完善、結(jié)合了文檔、Mock.js、可視化、Rest、接口過渡、文檔修改提醒、支持本地部署

          Yapi


          YApi是去哪兒網(wǎng)移動架構(gòu)組開發(fā)的一個開源項目,YApi的 Mock 功能可以根據(jù)用戶的輸入接口信息如協(xié)議、URL、接口名、請求頭、請求參數(shù)、返回數(shù)據(jù)、生成 Mock 接口,這些接口會自動生成模擬數(shù)據(jù),創(chuàng)建者可以自由構(gòu)造需要的數(shù)據(jù)。mock模擬數(shù)據(jù)基于mock.js。

          Mock.js 是一款模擬數(shù)據(jù)生成器,旨在幫助前端獨立于后端進(jìn)行開發(fā),幫助編寫單元測試。提供了以下模擬功能:

          • 根據(jù)數(shù)據(jù)模板生成模擬數(shù)據(jù)

          • 模擬 Ajax 請求,生成并返回模擬數(shù)據(jù)

          • 基于 HTML 模板生成模擬數(shù)據(jù)

          Moco


          Moco 是一個簡單搭建 stub 的框架,主要用于測試和集成。

          Moco本身支持API和獨立運(yùn)行兩種方式。通過使用API,開發(fā)人員可以在JUnit、JBehave等測試測試框架里使用Moco,極大程度地降低了集成點測試的復(fù)雜度

          Moco可以提供以下服務(wù):

          • HTTP APIs

          • Socket APIs

          • REST API

          接口測試Mock工具對比


          Yapi

          Rap

          Moco

          方便集成×
          Mock簡便性
          文檔管理××
          開源程度
          部署難度
          可視化界面×

          ?

          本文轉(zhuǎn)自:搜狗測試

          end


          瀏覽 60
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  六月婷| 人日人欧美在线 | AAA级大片 | 国产视频色色色 | 日韩特级毛片 |