日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

使用Mockito进行Java单元测试

發(fā)布時間:2025/3/21 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Mockito进行Java单元测试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Google在3月份推出了一個關(guān)于Android MVP架構(gòu)的官方Sample,除MVP架構(gòu)本身之外,在這個Sample中配備了完善的單元測試用例,這對學(xué)習(xí)如何在Android中進行單元測試具有極高的價值。這篇文章主要是對其中使用的Mock框架-Mockito的學(xué)習(xí)總結(jié)。

什么是Mock?

Mock是虛擬對象,是為了模擬真實對象而創(chuàng)建的,這些虛擬對象的行為是可控的。為方便理解,可以把Mock視為『汽車碰撞實驗』中的『假人』。


真實軟件架構(gòu)
測試軟件架構(gòu)

為什么需要Mock?

  • 真實軟件架構(gòu)中的對象行為是不確定的(eg:時間、對象的狀態(tài))

  • 真實對象的一些狀態(tài)又很難構(gòu)造(eg:網(wǎng)絡(luò)抖動)

  • 真實對象在進行某種操作時需要很長時間,影響測試進度(eg:一些數(shù)據(jù)庫的初始化)

  • TDD(測試驅(qū)動開發(fā))要求先寫測試代碼,再進行開發(fā),那么經(jīng)常會出現(xiàn)真實對象還沒有開發(fā)完成的現(xiàn)象,又或者真實對象是一個硬件,只能模擬

  • 實際測試中需要關(guān)注真實對象如何被調(diào)用,真實對象內(nèi)部狀態(tài)如何

  • 上述的問題都是可以通過引入Mock來解決的。

    什么是Mockito?

    Mockito是用于Java單元測試的一個Mock框架。

    為什么選擇Mockito?

  • Mockito是StackOverflow社區(qū)票選的最佳Java Mock框架

  • Github 中位于Top4的Library

  • 3.使用簡潔、優(yōu)雅的API即可寫出漂亮的單元測試用例,這些單元測試語法符合自然語言,方便閱讀

    Android Studio中如何配置使用Mockito?

    android studio默認的構(gòu)建工具是gradle,只需要在對應(yīng)的build.grade中添加Mockito依賴即可。

    repositories { jcenter() }dependencies { testCompile "org.mockito:mockito-core:1.+" }

    Mockito可以完成哪些功能?

  • 驗證Mock對象某函數(shù)是否執(zhí)行,執(zhí)行次數(shù)
  • Mock對象某函數(shù)有返回值,可以設(shè)置返回值。對于void的函數(shù),可以設(shè)置拋出異常(即常說的安裝樁)
  • 驗證Mock對象函數(shù)執(zhí)行順序
  • 參數(shù)匹配(有很多內(nèi)建的參數(shù),也可以自己實現(xiàn)),這樣使得驗證函數(shù)交互或者設(shè)置返回值更加靈活
  • 可以捕獲參數(shù)用于后續(xù)進一步驗證或設(shè)置
  • Mockito常用API及使用方法

  • 創(chuàng)建Mock對象-創(chuàng)建Mock對象有兩種方法
    • 使用mock函數(shù) - public static <T> T mock(Class<T> classToMock)
    • 使用@Mock注釋 - 但必須在@Test函數(shù)中初始化或使用內(nèi)建的Junit Runner
  • 驗證Mock對象函數(shù)是否執(zhí)行、執(zhí)行次數(shù) - public static <T> T verify(T mock,VerificationMode mode),其中mode可以為times(x), atLeastOnce() 或者 never()
    verify(mock, times(5)).someMethod("was called five times");
    verify(mock, atLeast(2)).someMethod("was called at least two times");
    verify(mock, atLeastOnce()).someMethod(anyString());
  • 給模擬對象的有返回值的函數(shù)安裝樁 -
    when(methodCall).thenReturn() 或 when(methodCall).thenThrow()
  • 給模擬對象返回void的函數(shù)安裝樁 -
    doThrow(new RuntimeException()).when(mockObject).methodCall();
  • 參數(shù)匹配-Mockito默認使用java的equals判斷函數(shù)參數(shù)值,但有時為了更加靈活,可以使用參數(shù)匹配功能
    when(mockedObject.methodCall(anyInt())).thenReturn("element")when(mockedObject.contains(argThat(isValid())).thenReturn("element");//isValid()是自定義的參數(shù)匹配
  • 驗證模擬對象函數(shù)執(zhí)行順序
    personDAL.add(any());personDAL.getAll();InOrder inOrder = inOrder(personDAL);inOrder.verify(personDAL).add(any());inOrder.verify(personDAL).getAll();
  • 捕獲模擬對象函數(shù)參數(shù),進一步驗證捕獲的參數(shù)
    ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class);verify(mock).doSomething(argument.capture());assertEquals("John", argument.getValue().getName());
  • 關(guān)于Mockito會繼續(xù)根據(jù)實際項目進一步整理實踐知識。



    文/桃子媽咪(簡書作者)
    原文鏈接:http://www.jianshu.com/p/3d6f76df21f9
    著作權(quán)歸作者所有,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),并標注“簡書作者”。

    總結(jié)

    以上是生活随笔為你收集整理的使用Mockito进行Java单元测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 精品国精品国产 | 久久久久成人网 | 好吊色一区二区三区 | 亚洲午夜18毛片在线看 | 玖玖爱免费视频 | 中文字幕88页 | 亚洲啊v在线| 欧洲金发美女大战黑人 | 免费观看黄网站 | 久久三级网 | 国产成人亚洲精品无码h在线 | 亚洲国内精品 | 99久久精品一区 | 欧美在线一二三四区 | 超碰首页 | www.日日日 | 久草网视频 | 最好看的日本字幕mv视频大全 | 久久中文字幕无码 | 日韩手机在线观看 | 国产无遮挡18禁无码网站不卡 | 国产精品视频久久久久久久 | 欧美 日韩 国产 亚洲 色 | 自拍视频网站 | 国产精品国产精品国产专区蜜臀ah | 最新黄色av网址 | 亚洲精品男人天堂 | 日本热久久 | 中文字幕+乱码+中文乱码www | 国产亚洲精品网站 | 日本一本二本三区免费 | 五十路在线视频 | 最新在线视频 | 国产亚洲精品久久久久动 | 精品无码免费视频 | 国产亚洲成人av | 深夜在线网站 | xxxxwwww国产| 少妇精品无码一区二区免费视频 | 久久av免费 | 日韩不卡av在线 | 欧美精品一区二区三区久久 | 久操福利视频 | 免费av网站在线观看 | 国产精品久久国产精麻豆96堂 | 日本美女三级 | 亚洲天堂影视 | 日本理伦片午夜理伦片 | www,av在线 | 日韩精品一区二区三区在线 | 在线播放国产视频 | 久久久精品人妻一区二区三区色秀 | 18精品爽国产白嫩精品 | 伊人网综合视频 | 欧美午夜视频 | 蜜桃视频在线网站 | 日韩理论在线 | 男女偷爱性视频刺激 | 国产精品久久久久久久久久免费 | 久久久夜色 | 爱情岛论坛亚洲自拍 | 中国一级特黄真人毛片免费观看 | 激情伊人网 | 一区二区不卡在线观看 | 成人a视频| 亚洲精品国产精品国自产在线 | 国产精品久久久久999 | 欧美色图亚洲自拍 | 日本免费无人高清 | 男女污污软件 | 国产又粗又大又长 | 国产女人高潮毛片 | 九九九九九九精品 | 亚洲av成人无码一区二区三区在线观看 | 波多野结衣爱爱 | 娇妻高潮浓精白浆xxⅹ | 国产强伦人妻毛片 | 国产精品午夜福利视频234区 | 国产成人精品久久二区二区 | 香蕉视频免费看 | 精品人伦一区二区三区蜜桃免费 | 日韩精品久久久久久久的张开腿让 | 91在线最新 | 成人免费观看网址 | 亚洲久视频 | 伊人久久大香线蕉成人综合网 | 日本在线一 | 激情www| 亚洲福利一区二区三区 | 天天cao | 久久av一区二区三区亚洲 | 狠狠躁狠狠躁视频专区 | 狠狠操狠狠爱 | 美女视频一区二区三区 | av全黄 | 久操福利视频 | 樱桃视频一区二区三区 | 国产一区视频在线播放 | 日韩国产传媒 |