国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

利用Mockito進(jìn)行單元測(cè)試[1]-{各種筆記}

2019-11-08 03:27:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1. @spy和@Mock的區(qū)別

@spy注解過(guò)的類,在沒(méi)有設(shè)置模擬的返回值的時(shí)候,所有的方法都是真實(shí)方法,返回和真實(shí)方法的返回是一樣的;而@Mock注解過(guò)的類,其所有的方法都是模擬的方法,如果沒(méi)有設(shè)置模擬的返回值,就會(huì)返回null。 另外,@spy注解過(guò)的類進(jìn)行方法的模擬時(shí)。一般使用下面這種格式:

Mockito.doReturn(yourResponse).when(yourService).yourMethod(yourRequest);

@Mock注解的類一般都是使用下面這種格式:

Mockito.when(yourService.yourMethod(yourRequest)).thenReturn(yourResponse);

2.使用@InjectMocks對(duì)依賴的類進(jìn)行自動(dòng)注入

一般我們都不會(huì)直接對(duì)Mock的類進(jìn)行測(cè)試,因?yàn)槟菢拥臏y(cè)試結(jié)果都是設(shè)定的。我們會(huì)對(duì)調(diào)用外部服務(wù)的類進(jìn)行mock,并對(duì)接受這個(gè)類的返回并進(jìn)行處理的類進(jìn)行單元測(cè)試。這時(shí)就需要@InjectMocks這個(gè)注解了。 比如說(shuō)類MyService.java是調(diào)用外部服務(wù)的類,MyCalc.java是接收外部服務(wù)的返回并進(jìn)行處理的類。實(shí)現(xiàn)代碼如下:

public class MyService{ public int sendRequest(String req){ int rsp = 0; //調(diào)用外部服務(wù)并收到返回結(jié)果 return rsp; }}public class MyCalc{ @Autowired PRivate MyService myService; public int calc(String s1 , String s2){ int a = myService.sendRequest(s1); int b = myService.sendRequest(s2); return a+b; }}

如果測(cè)試類這樣寫:

public class MyTest{ @Spy private MyService myService; @Test public void testAAddB(){ Mockito.doReturn(3).when(myService).sendRequest("1"); MyCalc myCalc = new MyCalc(); System.out.println(myCalc.calc("1","2")); }}

在運(yùn)行的時(shí)候會(huì)報(bào)空指針的錯(cuò)誤。因?yàn)镸yService這個(gè)類沒(méi)有初始化。 所以需要對(duì)類MyCalc進(jìn)行InjectMocks的注解。 改為以下的輸出就是正常的5了。

public class MyTest{ @Spy private MyService myService; @InjectMocks private MyCalc myCalc; @Test public void testAAddB(){ Mockito.doReturn(3).when(myService).sendRequest("1"); System.out.println(myCalc.calc("1","2")); }}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗平县| 安泽县| 子长县| 东乌珠穆沁旗| 海宁市| 德化县| 闸北区| 宁化县| 永福县| 昌宁县| 青神县| 合川市| 高要市| 灵川县| 北流市| 山东省| 临猗县| 平顺县| 白沙| 句容市| 赞皇县| 凤冈县| 乌兰浩特市| 马关县| 游戏| 福鼎市| 乐业县| 睢宁县| 怀远县| 潞城市| 商洛市| 香格里拉县| 新绛县| 深水埗区| 特克斯县| 浪卡子县| 同德县| 游戏| 潼南县| 焉耆| 德保县|