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

SpringBoot MockMvc單元測(cè)試的示例代碼

 更新時(shí)間:2018年11月14日 11:07:55   作者:玉天恒  
這篇文章主要介紹了SpringBoot MockMvc單元測(cè)試的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

為何使用MockMvc?

對(duì)模塊進(jìn)行集成測(cè)試時(shí),希望能夠通過(guò)輸入U(xiǎn)RL對(duì)Controller進(jìn)行測(cè)試,如果通過(guò)啟動(dòng)服務(wù)器,建立http client進(jìn)行測(cè)試,這樣會(huì)使得測(cè)試變得很麻煩,比如,啟動(dòng)速度慢,測(cè)試驗(yàn)證不方便,依賴網(wǎng)絡(luò)環(huán)境等,所以為了可以對(duì)Controller進(jìn)行測(cè)試,我們引入了MockMVC。

MockMvc實(shí)現(xiàn)了對(duì)Http請(qǐng)求的模擬,能夠直接使用網(wǎng)絡(luò)的形式,轉(zhuǎn)換到Controller的調(diào)用,這樣可以使得測(cè)試速度快、不依賴網(wǎng)絡(luò)環(huán)境,而且提供了一套驗(yàn)證的工具,這樣可以使得請(qǐng)求的驗(yàn)證統(tǒng)一而且很方便。

MockMvcBuilder

MockMvc是spring測(cè)試下的一個(gè)非常好用的類,他們的初始化需要在setUp中進(jìn)行。

MockMvcBuilder是用來(lái)構(gòu)造MockMvc的構(gòu)造器,其主要有兩個(gè)實(shí)現(xiàn):StandaloneMockMvcBuilder和DefaultMockMvcBuilder,前者繼承了后者。

① MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,將會(huì)從該上下文獲取相應(yīng)的控制器并得到相應(yīng)的MockMvc;

② MockMvcBuilders.standaloneSetup(Object... controllers):通過(guò)參數(shù)指定一組控制器,這樣就不需要從上下文獲取了,比如this.mockMvc = MockMvcBuilders.standaloneSetup(this.controller).build();

這些Builder還提供了其他api,可以自行百度

1.添加測(cè)試依賴

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>top.ytheng</groupId>
 <artifactId>springboot-demo</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 
 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
       <scope>true</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

2.添加MocMvc測(cè)試類

package top.ytheng.demo;

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;

//底層用junit SpringJunit4ClassRunner
@RunWith(SpringRunner.class)
//啟動(dòng)整個(gè)Springboot工程
@SpringBootTest(classes= {DemoApplication.class})
//鼠標(biāo)選中SpringBootTestDemo后執(zhí)行Run As -> JUnit Test可以同時(shí)執(zhí)行多個(gè)測(cè)試
@AutoConfigureMockMvc
public class MockMvcTestDemo {
  
  @Autowired
  private MockMvc mockMvc;
  
  @Test
  public void mockTest() throws Exception {
    MvcResult mockResult = mockMvc.perform(MockMvcRequestBuilders.get("/file/testpath")).
        andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
    int status = mockResult.getResponse().getStatus();
    System.out.println(status);
  }
}

3.添加測(cè)試控制器

package top.ytheng.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/file")
public class FileController {
  
  @RequestMapping("/testpath")
  @ResponseBody
  private Object testPath() {
    return filePath;
  }

}

4.添加啟動(dòng)類

package top.ytheng.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication //等于下面3個(gè)
//@SpringBootConfiguration
//@EnableAutoConfiguration
//@ComponentScan
public class DemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

5.鼠標(biāo)選中MockMvcTestDemo類名,使用快捷鍵啟動(dòng)JUnit測(cè)試(Shift + Alt + X,T),進(jìn)行測(cè)試

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java?8中的18個(gè)常用日期處理(收藏)

    Java?8中的18個(gè)常用日期處理(收藏)

    伴隨lambda表達(dá)式、streams以及一系列小優(yōu)化,Java 8 推出了全新的日期時(shí)間API,這篇文章主要介紹了Java?8的18個(gè)常用日期處理,需要的朋友可以參考下
    2022-04-04
  • IDEA+GIT使用入門圖文詳解

    IDEA+GIT使用入門圖文詳解

    這篇文章主要介紹了IDEA+GIT使用入門詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java 三種進(jìn)制的數(shù)值常量操作

    Java 三種進(jìn)制的數(shù)值常量操作

    這篇文章主要介紹了Java 三種進(jìn)制的數(shù)值常量操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • jQuery.event.trigger()的簡(jiǎn)單解釋

    jQuery.event.trigger()的簡(jiǎn)單解釋

    今天小編就為大家分享一篇關(guān)于jQuery.event.trigger()的簡(jiǎn)單解釋,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Spring Data Jpa 復(fù)合主鍵的實(shí)現(xiàn)

    Spring Data Jpa 復(fù)合主鍵的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Data Jpa 復(fù)合主鍵的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java如何簡(jiǎn)單快速入門JWT(token生成與驗(yàn)證)

    Java如何簡(jiǎn)單快速入門JWT(token生成與驗(yàn)證)

    這篇文章主要給大家介紹了關(guān)于Java如何簡(jiǎn)單快速入門JWT(token生成與驗(yàn)證)的相關(guān)資料,JWT是一個(gè)加密的字符串,JWT傳輸?shù)男畔⒔?jīng)過(guò)了數(shù)字簽名,因此傳輸?shù)男畔⒖梢员或?yàn)證和信任,需要的朋友可以參考下
    2023-12-12
  • 關(guān)于java數(shù)組與字符串相互轉(zhuǎn)換的問(wèn)題

    關(guān)于java數(shù)組與字符串相互轉(zhuǎn)換的問(wèn)題

    這篇文章主要介紹了java數(shù)組與字符串相互轉(zhuǎn)換的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Springboot 自定義校驗(yàn)代碼實(shí)例

    Springboot 自定義校驗(yàn)代碼實(shí)例

    這篇文章主要介紹了Springboot 自定義校驗(yàn)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Maven安裝及MyEclipse中使用Maven

    Maven安裝及MyEclipse中使用Maven

    這篇文章主要為大家詳細(xì)介紹了Maven安裝步驟,及MyEclipse中如何使用Maven,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Java的Jackson庫(kù)的使用及其樹(shù)模型的入門學(xué)習(xí)教程

    Java的Jackson庫(kù)的使用及其樹(shù)模型的入門學(xué)習(xí)教程

    這篇文章主要介紹了Java的Jackson庫(kù)的使用及其樹(shù)模型入門學(xué)習(xí)教程,Jackson庫(kù)通常被用來(lái)作Java對(duì)象和JSON的互相轉(zhuǎn)換,需要的朋友可以參考下
    2016-01-01

最新評(píng)論