基于SpringBoot?Mock單元測試詳解
Junit中的基本注解:
@Test
:使用該注解標注的public void方法會表示為一個測試方法;@BeforeClass
:表示在類中的任意public static void方法執(zhí)行之前執(zhí)行;@AfterClass
:表示在類中的任意public static void方法之后執(zhí)行;@Before
:表示在任意使用@Test注解標注的public void方法執(zhí)行之前執(zhí)行;@After
:表示在任意使用@Test注解標注的public void方法執(zhí)行之后執(zhí)行;
SpringBoot 單元測試詳解(Mockito、MockBean)
SpringBoot 單元測試(cobertura 生成覆蓋率報告)
1.Mock的概念:
所謂的mock就是創(chuàng)建一個類的虛假的對象,在測試環(huán)境中,用來替換掉真實的對象,以達到兩大目的:
驗證這個對象的某些方法的調(diào)用情況,調(diào)用了多少次,參數(shù)是什么等等指定這個對象的某些方法的行為,返回特定的值,或者是執(zhí)行特定的動作 2. 添加依賴
新建的springBoot項目中默認包含了spring-boot-starter-test的依賴,如果沒有包含可自行在pom.xml中添加依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
進入 spring-boot-starter-test-2.2.2.RELEASE.pom 可以看到該依賴中已經(jīng)有單元測試所需的大部分依賴,如:
junit
mockito
hamcrest
注意包含的junit為junit5 ,在主要還是使用junit4所以在pom.xml中添加依賴
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency>
這里如果不添加的話,在使用@RunWith注解的時候也會提示你添加,點擊Add ‘JUnit4' to classpath也會自動在pom.xml幫你添加
若為非springboot項目,其他 spring 項目,需要自己添加 Junit 和 mockito 的依賴。SpringBoot不要添加,添加后Test的時候會出錯
<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用于對指定方法進行返回值的定制,它需要與will開頭的方法一起使用
通過willReturn可以直接指定打樁的方法的返回值
when(userRepository.findByUserName(Mockito.anyString())).thenReturn(user);
when + thenReturn
when的作用與Given有點類似,但它一般與then開頭的方法一起使用。
thenReturn與willReturn類似,不過它一般與when一起使用。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot整合Redis哨兵模式的實現(xiàn)示例
Redis哨兵模式是Redis高可用方案的一種實現(xiàn)方式,通過哨兵來自動實現(xiàn)故障轉移,從而保證高可用,本文主要介紹了SpringBoot整合Redis哨兵模式的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-02-02基于Spring + Spring MVC + Mybatis 高性能web構建實例詳解
這篇文章主要介紹了基于Spring + Spring MVC + Mybatis 高性能web構建實例詳解,需要的朋友可以參考下2017-04-04java 使用簡單的demo實例告訴你優(yōu)化算法的強大
本篇文章介紹了,在java中使用簡單的demo實例告訴你優(yōu)化算法的強大。需要的朋友參考下2013-05-05springboot快速搭建ftpserver服務端的詳細步驟
基于springboot,使用ftpserver快速搭建一個FTP服務端,搭建過程很簡單,我們把過程分成4個步驟,一分鐘內(nèi)快速完成構建,感興趣的朋友跟隨小編一起看看吧2023-11-11SpringBoot整合新版SpringSecurity完整過程
Spring Security是保障Spring應用程序安全的強大框架,而新版的Spring Security引入了lambda表達式來配置,使得安全配置更加簡潔、優(yōu)雅,本文將介紹如何在Spring Boot項目中整合新版Spring Security,需要的朋友可以參考下2024-02-02使用BufferedReader讀取TXT文件中數(shù)值,并輸出最大值
這篇文章主要介紹了使用BufferedReader讀取TXT文件中數(shù)值,并輸出最大值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12