欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

單元測(cè)試 @mock與@SpringBootTest的使用

 更新時(shí)間:2021年10月14日 15:14:35   作者:程序~人生  
這篇文章主要介紹了單元測(cè)試 @mock與@SpringBootTest的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在寫單元測(cè)試的過(guò)程中我們會(huì)發(fā)現(xiàn)需要測(cè)試的類有很多依賴,這些依賴的類或者資源又會(huì)有依賴,導(dǎo)致在單元測(cè)試代碼里無(wú)法完成構(gòu)建,我們應(yīng)對(duì)的方法是Mock。

簡(jiǎn)單的說(shuō)就是模擬這些需要構(gòu)建的類或者資源,提供給需要測(cè)試的對(duì)象使用。

一.單元測(cè)試工具mock使用

1.引入依賴包

2.mock測(cè)試類

二.springboot使用@SpringBootTest單元測(cè)試

1.引入依賴包

2.測(cè)試類

三.mock和@springBootTest區(qū)別

1.mock進(jìn)行單元測(cè)試不依賴spring的bean定義文件

不需要啟動(dòng)web服務(wù),執(zhí)行起來(lái)速度很快。

2.@springBootTest需要啟動(dòng)服務(wù)

執(zhí)行真正的操作,執(zhí)行速度慢,當(dāng)需要真正的dao層操作時(shí)可選此測(cè)試方式。

單元測(cè)試--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 的測(cè)試一樣。

啟動(dòng)類是必須要有的。

當(dāng)有多個(gè) @Test 的方法,需要一起執(zhí)行的時(shí)候, 執(zhí)行 XdclassSpringbootApplicationTests 這個(gè)類的 run或debug。

Assert 和 TestCase 都是 斷言,用法一樣。

MockMvc類的使用和模擬Http請(qǐng)求

相關(guān)API:

  • perform:執(zhí)行一個(gè)RequestBuilder請(qǐng)求
  • 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();
        }
    }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中的鎖與鎖的狀態(tài)升級(jí)詳細(xì)解讀

    Java中的鎖與鎖的狀態(tài)升級(jí)詳細(xì)解讀

    這篇文章主要介紹了Java中的鎖與鎖的狀態(tài)升級(jí)詳細(xì)解讀,Java 1.6以后官方針對(duì)鎖的優(yōu)化,主要是增加了兩種新的鎖:偏向鎖和輕量級(jí)鎖,再加上本身重量級(jí)鎖,那么鎖基本上可以大致分為這三種,它們之間的區(qū)別主要是體現(xiàn)在等待時(shí)間上面,需要的朋友可以參考下
    2024-01-01
  • Java CountDownLatch與CyclicBarrier及Semaphore使用教程

    Java CountDownLatch與CyclicBarrier及Semaphore使用教程

    對(duì)于并發(fā)執(zhí)行,Java中的CountDownLatch是一個(gè)重要的類。為了更好的理解CountDownLatch這個(gè)類,本文將通過(guò)例子和源碼帶領(lǐng)大家深入解析CountDownLatch與CyclicBarrier及Semaphore的原理,感興趣的可以學(xué)習(xí)一下
    2023-01-01
  • IDEA在一個(gè)工作空間中管理多個(gè)項(xiàng)目的詳細(xì)步驟

    IDEA在一個(gè)工作空間中管理多個(gè)項(xiàng)目的詳細(xì)步驟

    這篇文章主要介紹了IDEA在一個(gè)工作空間中管理多個(gè)項(xiàng)目的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • AbstractQueuedSynchronizer(AQS)鎖狀態(tài)同步和排隊(duì)管理

    AbstractQueuedSynchronizer(AQS)鎖狀態(tài)同步和排隊(duì)管理

    這篇文章主要介紹了為大家AbstractQueuedSynchronizer(AQS)鎖狀態(tài)同步和排隊(duì)管理源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Spring Boot詳解配置文件有哪些作用與細(xì)則

    Spring Boot詳解配置文件有哪些作用與細(xì)則

    SpringBoot項(xiàng)目是一個(gè)標(biāo)準(zhǔn)的Maven項(xiàng)目,它的配置文件需要放在src/main/resources/下,其文件名必須為application,其存在兩種文件形式,分別是properties和yaml(或者yml)文件
    2022-07-07
  • Spring JdbcTemplate整合使用方法及原理詳解

    Spring JdbcTemplate整合使用方法及原理詳解

    這篇文章主要介紹了Spring JdbcTemplate整合使用方法及原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java狀態(tài)機(jī)的一種優(yōu)雅寫法分享

    Java狀態(tài)機(jī)的一種優(yōu)雅寫法分享

    狀態(tài)機(jī)是一種數(shù)學(xué)模型,對(duì)于我們業(yè)務(wù)實(shí)現(xiàn)有很大的幫助。我們可以用非常多的方法實(shí)現(xiàn)狀態(tài)機(jī),這篇文章就來(lái)介紹一個(gè)狀態(tài)機(jī)優(yōu)雅的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助
    2023-04-04
  • Java Spring boot 2.0 跨域問(wèn)題的解決

    Java Spring boot 2.0 跨域問(wèn)題的解決

    本篇文章主要介紹了Java Spring boot 2.0 跨域問(wèn)題的解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Java手寫持久層框架的詳細(xì)代碼

    Java手寫持久層框架的詳細(xì)代碼

    這篇文章主要介紹了Java手寫持久層框架,本文適合有一定java基礎(chǔ)的同學(xué),通過(guò)自定義持久層框架,可以更加清楚常用的mybatis等開(kāi)源框架的原理,需要的朋友可以參考下
    2022-08-08
  • JDK1.8安裝與配置超詳細(xì)教程

    JDK1.8安裝與配置超詳細(xì)教程

    JDK1.8即為JDK8,JDK8是目前是最成熟最穩(wěn)定的版本,本文將詳細(xì)介紹JDK1.8的安裝與配置,需要的朋友可以參考下
    2023-03-03

最新評(píng)論