單元測試 @mock與@SpringBootTest的使用
在寫單元測試的過程中我們會發(fā)現(xiàn)需要測試的類有很多依賴,這些依賴的類或者資源又會有依賴,導(dǎo)致在單元測試代碼里無法完成構(gòu)建,我們應(yīng)對的方法是Mock。
簡單的說就是模擬這些需要構(gòu)建的類或者資源,提供給需要測試的對象使用。
一.單元測試工具mock使用
1.引入依賴包

2.mock測試類

二.springboot使用@SpringBootTest單元測試
1.引入依賴包

2.測試類

三.mock和@springBootTest區(qū)別
1.mock進(jìn)行單元測試不依賴spring的bean定義文件
不需要啟動web服務(wù),執(zhí)行起來速度很快。
2.@springBootTest需要啟動服務(wù)
執(zhí)行真正的操作,執(zhí)行速度慢,當(dāng)需要真正的dao層操作時可選此測試方式。
單元測試--SpringbootTest和MockMvc
SpringbootTest
基于Junit 的Test
import junit.framework.TestCase;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class) //底層用junit的 SpringJUnit4ClassRunner
@SpringBootTest(classes = {XdclassSpringbootApplication.class})
public class XdclassSpringbootApplicationTests {
@Test
public void testOne() {
System.out.println("start test");
Assert.assertEquals(1,1);
TestCase.assertEquals(1,2);
}
}
當(dāng)然也可以使用 @Before 和 @After , 和 junit 的測試一樣。
啟動類是必須要有的。
當(dāng)有多個 @Test 的方法,需要一起執(zhí)行的時候, 執(zhí)行 XdclassSpringbootApplicationTests 這個類的 run或debug。
Assert 和 TestCase 都是 斷言,用法一樣。
MockMvc類的使用和模擬Http請求
相關(guān)API:
perform:執(zhí)行一個RequestBuilder請求andExpect:添加ResultMatcher->MockMvcResultMatchers驗(yàn)證規(guī)則andReturn:最后返回相應(yīng)的MvcResult->Response
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class MockMvcTestDemo {
@Autowired
private MockMvc mockMvc;
@Test
public void apiTest(){
try {
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/hello"))
.andExpect(MockMvcResultMatchers.status().isOk()) .andReturn();
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot?實(shí)現(xiàn)不同context-path下的會話共享
這篇文章主要介紹了springboot?實(shí)現(xiàn)不同context-path下的會話共享,基于很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
從dubbo zookeeper注冊地址提取出zookeeper地址的方法
今天小編就為大家分享一篇關(guān)于從dubbo zookeeper注冊地址提取出zookeeper地址的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
SpringBoot監(jiān)聽器的實(shí)現(xiàn)示例
在SpringBoot中,你可以使用監(jiān)聽器來響應(yīng)特定的事件,本文主要介紹了SpringBoot監(jiān)聽器的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2023-12-12
基于接口實(shí)現(xiàn)java動態(tài)代理示例
這篇文章主要介紹了基于接口實(shí)現(xiàn)java動態(tài)代理示例,需要的朋友可以參考下2014-04-04
Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖
今天小編就為大家分享一篇關(guān)于Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
Springboot3.3 整合Cassandra 4.1.5的詳細(xì)過程
這篇文章主要介紹了Springboot3.3 整合Cassandra 4.1.5的詳細(xì)過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06

