基于SpringBoot?Mock單元測(cè)試詳解
Junit中的基本注解:
@Test:使用該注解標(biāo)注的public void方法會(huì)表示為一個(gè)測(cè)試方法;@BeforeClass:表示在類(lèi)中的任意public static void方法執(zhí)行之前執(zhí)行;@AfterClass:表示在類(lèi)中的任意public static void方法之后執(zhí)行;@Before:表示在任意使用@Test注解標(biāo)注的public void方法執(zhí)行之前執(zhí)行;@After:表示在任意使用@Test注解標(biāo)注的public void方法執(zhí)行之后執(zhí)行;
SpringBoot 單元測(cè)試詳解(Mockito、MockBean)
SpringBoot 單元測(cè)試(cobertura 生成覆蓋率報(bào)告)
1.Mock的概念:
所謂的mock就是創(chuàng)建一個(gè)類(lèi)的虛假的對(duì)象,在測(cè)試環(huán)境中,用來(lái)替換掉真實(shí)的對(duì)象,以達(dá)到兩大目的:
驗(yàn)證這個(gè)對(duì)象的某些方法的調(diào)用情況,調(diào)用了多少次,參數(shù)是什么等等指定這個(gè)對(duì)象的某些方法的行為,返回特定的值,或者是執(zhí)行特定的動(dòng)作 2. 添加依賴
新建的springBoot項(xiàng)目中默認(rèn)包含了spring-boot-starter-test的依賴,如果沒(méi)有包含可自行在pom.xml中添加依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

進(jìn)入 spring-boot-starter-test-2.2.2.RELEASE.pom 可以看到該依賴中已經(jīng)有單元測(cè)試所需的大部分依賴,如:
junitmockitohamcrest

注意包含的junit為junit5 ,在主要還是使用junit4所以在pom.xml中添加依賴
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
這里如果不添加的話,在使用@RunWith注解的時(shí)候也會(huì)提示你添加,點(diǎn)擊Add ‘JUnit4' to classpath也會(huì)自動(dòng)在pom.xml幫你添加

若為非springboot項(xiàng)目,其他 spring 項(xiàng)目,需要自己添加 Junit 和 mockito 的依賴。SpringBoot不要添加,添加后Test的時(shí)候會(huì)出錯(cuò)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
3. 常用的 Mockito 方法
Mockito的使用,一般有以下幾種組合:
do/when:包括doThrow(…).when(…)/doReturn(…).when(…)/doAnswer(…).when(…)given/will:包括given(…).willReturn(…)/given(…).willAnswer(…)when/then: 包括when(…).thenReturn(…)/when(…).thenAnswer(…)
例如:
given(userRepository.findByUserName(Mockito.anyString())).willReturn(user);
given + willReturn
given用于對(duì)指定方法進(jìn)行返回值的定制,它需要與will開(kāi)頭的方法一起使用
通過(guò)willReturn可以直接指定打樁的方法的返回值
when(userRepository.findByUserName(Mockito.anyString())).thenReturn(user);
when + thenReturn
when的作用與Given有點(diǎn)類(lèi)似,但它一般與then開(kāi)頭的方法一起使用。
thenReturn與willReturn類(lèi)似,不過(guò)它一般與when一起使用。


以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot使用MockMvc測(cè)試get和post接口的示例代碼
- SpringBoot單元測(cè)試框架Mockito介紹及使用
- SpringBoot結(jié)合mockito測(cè)試實(shí)戰(zhàn)
- springboot實(shí)現(xiàn)mock平臺(tái)的示例代碼
- SpringBoot+JUnit5+MockMvc+Mockito單元測(cè)試的實(shí)現(xiàn)
- SpringBoot 單元測(cè)試實(shí)戰(zhàn)(Mockito,MockBean)
- SpringBoot如何讀取mock數(shù)據(jù)(高效調(diào)試接口)
相關(guān)文章
Java中zip的壓縮和解壓縮的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java中zip的壓縮和解壓縮的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
java如何創(chuàng)建一個(gè)jdbc程序詳解
使用Java程序來(lái)操作數(shù)據(jù)庫(kù),后者更加直接的話就是使用Java程序來(lái)發(fā)送SQL語(yǔ)句的技術(shù)稱(chēng)之為:JDBC。下面這篇文章主要給大家介紹了關(guān)于利用java如何創(chuàng)建一個(gè)jdbc程序的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-11-11
SpringBoot實(shí)現(xiàn)本地存儲(chǔ)文件上傳及提供HTTP訪問(wèn)服務(wù)的方法
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)本地存儲(chǔ)文件上傳及提供HTTP訪問(wèn)服務(wù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
springboot?vue測(cè)試平臺(tái)接口定義及發(fā)送請(qǐng)求功能實(shí)現(xiàn)
這篇文章主要為大家介紹了springboot+vue測(cè)試平臺(tái)接口定義及發(fā)送請(qǐng)求功能實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
兩個(gè)List集合取相同重復(fù)數(shù)據(jù)的方法
今天小編就為大家分享一篇關(guān)于兩個(gè)List集合取相同重復(fù)數(shù)據(jù)的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Spring Data JPA帶條件分頁(yè)查詢實(shí)現(xiàn)原理
這篇文章主要介紹了Spring Data JPA帶條件分頁(yè)查詢實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
關(guān)于Mybatis-Plus?Update更新策略問(wèn)題
這篇文章主要介紹了關(guān)于Mybatis-Plus?Update更新策略問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
解決報(bào)java.lang.AssertionError錯(cuò)誤的問(wèn)題
這篇文章主要介紹了解決報(bào)java.lang.AssertionError錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
Java 自定義Spring框架以及Spring框架的基本使用
Spring框架是由于軟件開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來(lái)完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務(wù)器端的開(kāi)發(fā)2021-10-10
Spring boot基于ScheduledFuture實(shí)現(xiàn)定時(shí)任務(wù)
這篇文章主要介紹了Spring boot基于ScheduledFuture實(shí)現(xiàn)定時(shí)任務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

