chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

ouxn_HW_Digital ? 來源:華為開發(fā)者社區(qū) ? 作者:華為開發(fā)者社區(qū) ? 2021-08-09 14:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

Mockito是啥?

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

什么情況下使用Mockito:

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

Mockito的使用:

1、引進(jìn)依賴

Maven依賴如下:

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

代碼中:

import org.mockito.Mockito

2、創(chuàng)建Mock對象

這里需要注意的是scala中只能對伴生對象或者Class創(chuàng)建mock對象,不能直接對Object創(chuàng)建mock對象。Scala中使用Mockito.mock(classOf[…])來創(chuàng)建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

}

}

舉個例子,現(xiàn)在對VpcClient進(jìn)行mock,從而可以調(diào)用VpcClient里面的getRouteTableList方法。

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

VpcClient.setMockClient(vpcClient)}

3、配置Mock對象

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

當(dāng)我們有了一個 Mock 對象后, 我們可以調(diào)用對象的方法,并且使用

Mockito.doReturn().when().method

,來設(shè)置當(dāng)調(diào)用method時,在某輸入下返回某輸出。這里的輸入是要與 method真實的入?yún)⒁恢碌?,輸出也是要與method真實的返回參數(shù)一致。

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)}

總結(jié):

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

官網(wǎng):

http://mockito.org

API文檔:

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

項目源碼:

https://github.com/mockito/mockito

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2997

    瀏覽量

    115606
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4940

    瀏覽量

    73069
  • REST
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    9821

原文標(biāo)題:干貨| 干了這杯Mockito雞尾酒,讓你輕松進(jìn)行單元測試

文章出處:【微信號:HW-DigitalHome,微信公眾號:華為數(shù)字家庭】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    請問DTU的設(shè)備號都在什么情況下需要填寫,填寫的規(guī)則是什么?

    DTU的設(shè)備號都在什么情況下需要填寫,填寫的規(guī)則是什么?
    發(fā)表于 08-07 07:50

    請問CYW20835在sleep mode的情況下,不進(jìn)入SDS或HIDOF的情況下,底電流最低是多少?

    請問CYW20835在sleep mode的情況下,不進(jìn)入SDS或HIDOF的情況下,底電流最低是多少?
    發(fā)表于 07-07 07:54

    DS1232LPS-2+T&R,在什么情況下,5腳RST會一直輸出高電平?

    DS1232LPS-2+T&R,這款芯片在什么情況下,5腳RST會一直輸出高電平?(正常時序是上電有個400多ms的高電平后,一直處于低電平,如果7腳沒有及時喂狗,會觸發(fā)復(fù)位,也就是重復(fù)400多ms的高電平后,一直處于低電平)
    發(fā)表于 04-18 07:51

    無感直流BLDC,大占空比情況下失步怎么解決?

    無感直流BLDC,大占空比情況下失步問題
    發(fā)表于 03-11 08:00

    DLPC350管角FAULT_STATUS是什么含義,什么樣的情況下這個指示燈會亮?

    ,這個指示燈會亮,具體是在什么情況下,這個指示燈會亮呢?或者說在哪些情況下,這個指示燈會亮。 幫忙解答,感謝。
    發(fā)表于 02-26 08:20

    DLPA3000 ILLUM_HSIDE_DRIVE ILLUM_LSIDE_DRIVE這二個腳外置MOS是什么情況下可以用?

    ILLUM_HSIDE_DRIVEILLUM_LSIDE_DRIVE這二個腳外置MOS是什么情況下可以用
    發(fā)表于 02-21 06:00

    gd32f470在什么情況下會進(jìn)入會進(jìn)入reset_handler?

    reset_handler了,請問啥情況下會進(jìn)入reset_handler???除了芯片通電第一次,cpu的復(fù)位腳說是也沒接出來按理來說也不會影響它的
    發(fā)表于 01-22 06:37

    ADS5474模數(shù)轉(zhuǎn)換器的VCM和VREF引腳在什么情況下使用?

    請介紹一ADS5474模數(shù)轉(zhuǎn)換器的VCM和VREF引腳在什么情況下使用? 文檔上說VCM是在直流耦合應(yīng)用時用于設(shè)置共模電壓,是不是指前級驅(qū)動電路使用放大器的時候?如果前面直接使用變壓器耦合成差分
    發(fā)表于 01-13 08:04

    ADS1115未接傳感器的通道會不時的出現(xiàn)數(shù)值,這是什么情況?

    最近做了塊AD采樣的板子,在其中1路接傳感器,其他3路不接傳感器的情況下,接傳感器的讀數(shù)正常,而未接傳感器的通道會不時的出現(xiàn)數(shù)值。這是什么情況?怎么解決?望大家給點意見
    發(fā)表于 01-09 06:47

    MSP430F4250的四種模式分別是在什么情況下使用呢?

    我是一名初學(xué)者,看了書知道MSP430F4250的AD轉(zhuǎn)換模式有四種,我想知道這四種轉(zhuǎn)化模式有什么區(qū)別,分別應(yīng)該在什么情況下使用。各位高手能否為我解答哈,在下不勝感激。因為是初學(xué)者,有很多東西都不知道,能盡量詳細(xì)就盡量哈,謝謝了。
    發(fā)表于 01-06 06:16

    ldc1614EVM評估版背面的沒焊電容時用來干嘛的?在什么情況下使用?

    請教一個關(guān)于ldc1614EVM的問題,評估版背面的沒焊電容時用來干嘛的?在什么情況下使用?
    發(fā)表于 01-02 08:23

    ADS1278數(shù)據(jù)輸出引腳Dout1有脈沖輸出是什么情況?

    ADS1278配置成SPI TDM模式,CLK時鐘24MHz,在SCLK沒給時鐘的情況下,用示波器觀察Dout1管腳就不規(guī)則脈沖輸出,寬度大約6us,周期不定。另外DRDY有規(guī)律性脈沖輸出,寬度大約50ns,間隔60us,請問這是什么情況?
    發(fā)表于 12-31 06:12

    LM98620的offset寄存器值什么情況下起作用?

    我想問下LM98620 的offset寄存器值什么情況下起作用?我是通過FPGA設(shè)置的,6個C_OFFS_XX寄存器和6個F_OFFS_XX都設(shè)置了,但是波形沒有整體抬升或者下降。 另外,我在
    發(fā)表于 12-23 07:48

    在VDD1沒有供電的情況下,VDD2正常供電的情況下,AMC1200的輸出應(yīng)該是什么狀態(tài)?

    請教一,在前端VDD1沒有供電的情況下,VDD2正常供電的情況下,AMC1200的輸出狀態(tài)為什么P端是3.8V ,N端是1.2V ,每一次都是這樣子, 請問,在VDD1沒有供電的情況下
    發(fā)表于 12-17 07:37

    Aigtek電壓放大器主要針對什么情況下使用

    電壓放大器主要是用于將輸入信號的電壓放大到所需的級別。它在電子設(shè)備和電路中的應(yīng)用非常廣泛,以下是適合使用電壓放大器的幾種主要情況: 信號傳輸:在通信系統(tǒng)中,電壓放大器用于放大低水平的輸入信號,以便
    的頭像 發(fā)表于 12-02 17:51 ?581次閱讀
    Aigtek電壓放大器主要針對<b class='flag-5'>什么情況下</b>使用