色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Mockito是什么 什么情況下使用Mockito

ouxn_HW_Digital ? 來源:華為開發者社區 ? 作者:華為開發者社區 ? 2021-08-09 14:39 ? 次閱讀

相信每一個程序猿在寫Unit Test的時候都會碰到一些令人頭疼的問題:如何測試一個rest接口;如何測試一個包含客戶端調用服務端的復雜方法;如何測試一個包含從數據庫讀取數據的復雜方法。。。這些問題mockito都可以幫我們輕松地解決。

Mockito是啥?

Mockito 是一個強大的用于 Java 開發的模擬測試框架, 通過 Mockito 我們可以創建和配置 Mock 對象, 進而簡化有外部依賴的類的測試。簡單來說,創建mock對象之后,這個對象里面的方法是怎么實現的可以不用去關心,我們只需要給這個方法定義一個輸入、輸出即可。

什么情況下使用Mockito:

假設現在要測試method A, method A里面又依賴Method B、Method C、Method D,而依賴的這3個method又不好去構建(如ObsClient需要真實AK SK,HttpClient需要構建客戶端與服務器,Database相對好構建,但是假設Method C只是從table1、table2聯合查詢,你還得分別往table1、table2 insert數據,很繁瑣),這時候可以考慮Mockito進行優雅測試,當然如果你想去構建真實的測試場景,未免有點舍本逐末了。

Mockito的使用:

1、引進依賴

Maven依賴如下:

《dependency》 《groupId》org.mockito《/groupId》 《artifactId》mockito-core《/artifactId》 《version》1.10.19《/version》 《scope》test《/scope》《/dependency》

代碼中:

import org.mockito.Mockito

2、創建Mock對象

這里需要注意的是scala中只能對伴生對象或者Class創建mock對象,不能直接對Object創建mock對象。Scala中使用Mockito.mock(classOf[…])來創建mock對象

class VpcClient {

def getRouteTable(projectId: String, token: String, url: String): Seq[RouteTable] = {

val header = Map(RequestAttributes.X_AUTH_TOKEN -》 token,

“Content-Type” -》 MediaType.APPLICATION_JSON)

val response = restClient.get(url, header)}}object VpcClient {

private lazy val _instance: VpcClient = new VpcClient(conf)

private var mockClient: VpcClient = _

def getInstance(): VpcClient = {

// Keep original logic for other ut, which didn‘t set mock client.

if (RuntimeEnvironment.isTesting && null != mockClient) {

return mockClient

}

_instance

}

// only used for UT

def setMockClient(vpcClient: VpcClient): Unit = {

mockClient = vpcClient

}

}

舉個例子,現在對VpcClient進行mock,從而可以調用VpcClient里面的getRouteTableList方法。

class UtilSuite { val vpcClient = Mockito.mock(classOf[VpcClient])

VpcClient.setMockClient(vpcClient)}

3、配置Mock對象

Mockito.doReturn(routeTableInfo).when(vpcClient).getRouteTable(projectId, token,url)

當我們有了一個 Mock 對象后, 我們可以調用對象的方法,并且使用

Mockito.doReturn().when().method

,來設置當調用method時,在某輸入下返回某輸出。這里的輸入是要與 method真實的入參一致的,輸出也是要與method真實的返回參數一致。

class UtilSuite { val vpcClient = Mockito.mock(classOf[VpcClient])

VpcClient.setMockClient(vpcClient)

val projectId = “projectId”

val token = “token”

val url= “url”

val routeTableInfo = new RouteTableInfo

Mockito.doReturn(routeTableInfo).when(vpcClient).getRouteTable(projectId, token, url)}

總結:

上面講了Mockito的使用場景,以及scala中怎么使用Mockito創建mock對象。與java中使用Mockito有些許的差別,這些如果感興趣的話都可以參考下官方文檔:

官網:

http://mockito.org

API文檔:

http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html

項目源碼:

https://github.com/mockito/mockito

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2971

    瀏覽量

    104850
  • 代碼
    +關注

    關注

    30

    文章

    4801

    瀏覽量

    68728
  • REST
    +關注

    關注

    0

    文章

    32

    瀏覽量

    9422

原文標題:干貨| 干了這杯Mockito雞尾酒,讓你輕松進行單元測試

文章出處:【微信號:HW-DigitalHome,微信公眾號:華為數字家庭】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問什么情況下會損壞TLV2548,或者導致INT信號不再反應?

    如題,請問什么情況下會損壞TLV2548,或者導致INT信號不再反應? 我曾多次驅動過該AD,都可以正常讀取碼值。但有兩次遇到過AD沒有任何反應,只在上電的瞬間讀取電壓,INT不再拉低(我用的模式
    發表于 11-14 06:39

    tas5754的TDM功能在什么情況下使用,有什么優點?

    問下,這個TDM功能在什么情況下使用,有什么優點,還有同步信號是否就把LRCLK連接就可以,這個需要根據采樣率改寄存器嗎?
    發表于 10-31 06:03

    運放在什么情況下會出現正反輸入端電壓不等?

    專家老師,運放在什么情況下會出現正反輸入端電壓不等?
    發表于 09-24 08:06

    運放使用時,虛短,虛斷在什么情況下使用呢?

    運放使用時,虛短,虛斷在什么情況下使用呢?是在單端,差分輸入條件都能使用么?
    發表于 09-14 08:53

    什么情況下OPA541容易損壞?

    后用示波器TEK1012觀察限流保護電阻兩端的電壓,結果再次損壞OPA541。 我想請問什么情況下OPA541容易損壞,另外我使用的限流保護電阻和負載均為水泥電阻,不知是否因存在感性成分造成。附電路圖如下:
    發表于 09-11 07:49

    INA226的Alert引腳什么情況下會異常?

    INA226的Alert引腳什么情況下異常
    發表于 08-28 08:01

    DTU的設備號都在什么情況下需要填寫呢?填寫的規則是什么?

    DTU的設備號都在什么情況下需要填寫,填寫的規則是什么?
    發表于 07-26 08:18

    MOS管什么情況下會短路

    MOS管(Metal-Oxide-Semiconductor Field-Effect Transistor,金屬-氧化物半導體場效應晶體管)在多種情況下可能會發生短路,這些情況主要涉及其工作環境、操作條件、物理特性以及制造工藝等多個方面。以下是對MOS管短路原因的詳細分
    的頭像 發表于 07-16 11:39 ?3299次閱讀

    什么情況下會產生零序電流

    零序電流是指在三相電力系統中,三相電流的矢量和不為零的情況。在正常情況下,三相電力系統中的三相電流是平衡的,即三相電流的矢量和為零。但是,在某些特殊情況下,三相電流的矢量和不為零,就會產生零序電流
    的頭像 發表于 07-15 14:53 ?4231次閱讀

    受控源什么情況下可看為電阻

    受控源,又稱為非獨立源,是指其電壓或電流值受電路中其他部分的電壓或電流控制的電源。受控源在電路分析中具有重要的作用,其特性和行為與獨立源(如電池、發電機等)有所不同。在某些特定情況下,受控源可以看作
    的頭像 發表于 07-12 09:29 ?2116次閱讀

    什么情況下需要使用接地電阻柜

    什么情況下需要使用接地電阻柜?中性點電阻柜不接地時,中性點接地方式一般為不接地、直接接地和通過消弧線圈或小電阻接地。接地電阻測試需要將接地引下線接至大地,但大地電阻因季節變化而不同,需要用數字鉗形表
    的頭像 發表于 06-18 08:36 ?293次閱讀

    什么情況下需要申請T-mobile認證?T-mobile的優勢是什么?

    在如今日益全球化的市場中,無線通信技術的發展日新月異,消費者的需求也變得越來越多樣化。為了確保無線通信設備的兼容性和質量,許多設備制造商都選擇進行T-Mobile認證。那么,什么情況下您應該考慮申請
    的頭像 發表于 05-20 17:33 ?532次閱讀
    <b class='flag-5'>什么情況下</b>需要申請T-mobile認證?T-mobile的優勢是什么?

    什么情況下電容器會被擊穿

    電容器是一種常見的電子元件,廣泛應用于各個領域。然而,在特定條件,電容器可能會發生擊穿現象,導致其無法正常工作甚至損壞。那么,在什么情況下電容器會被擊穿呢?
    的頭像 發表于 02-19 14:11 ?2809次閱讀

    什么情況下應選擇使用環形變壓器而不是其他類型的變壓器?

    什么情況下應選擇使用環形變壓器而不是其他類型的變壓器? 環形變壓器是一種特殊類型的變壓器,其獨特的設計和結構使得它在特定情況下比其他類型的變壓器更適用。在本文中,我們將探討一些情況下應選擇使用環形
    的頭像 發表于 01-30 16:18 ?583次閱讀

    ADU7023的EEPROM在什么情況下會被改寫?

    ADU7023的EEPROM在什么情況下會被改寫?知道電源噪聲在特定頻率超過一定幅度會發生這種情況,排除電源噪聲因素,還可能有什么原因呢?
    發表于 01-11 06:17
    主站蜘蛛池模板: 亚洲精品另类有吗中文字幕 | 精品国产成人AV在线看| 日韩人妻少妇一区二区三区| 纯肉高H啪短文合集| 甜性涩爱dvd| 久久精品国产首叶| japanese幼儿videos| 天美传媒在线完整免费观看网站| 黄色三级在线| babesvideos欧美最新| 婷婷色色狠狠爱| 久久影院毛片一区二区| 纯肉高H啪短文合集| 一个人在线观看免费视频| 欧美含羞草免费观看全部完| 国产精品99久久久久久动态图| 一区二区乱子伦在线播放| 啪啪后入内射日韩| 花蝴蝶在线直播观看| 成人精品综合免费视频| 亚洲欧美日韩在线码不卡| 欧美国产在线一区| 九九热精品免费观看| 第一次处破女高清电影| 伊人色啪啪天天综合婷婷| 色窝窝777欧美午夜精品影院| 久久亚洲精品永久网站| 国产成人在线视频免费观看| 91国内精品久久久久免费影院| 午夜理伦片免费| 欧美阿v在线天堂| 精品久久免费视频| 高h肉辣文黄蓉| 91看片淫黄大片.在线天堂| 亚洲AV蜜桃永久无码精品无码网| 欧美亚洲日韩国码在线观看| 精品欧美小视频在线观看| 高中生被C到爽哭视频免费| 4455永久在线毛片观看| 亚洲中文字幕在线精品| 帅哥操美女|