spring boot 单元测试JUnit5使用MockMvc调用get请求,post请求,设置head请求头,解析返回值json和字符串

这篇具有很好参考价值的文章主要介绍了spring boot 单元测试JUnit5使用MockMvc调用get请求,post请求,设置head请求头,解析返回值json和字符串。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

spring boot 单元测试JUnit5使用MockMvc调用get/post接口

源码地址:https://gitcode.net/qq_39339588/springboot.git

1. 先准备一份controller,一会儿供测试调用
package space.goldchen.springboot.test;

import org.springframework.web.bind.annotation.*;
import space.goldchen.springboot.entity.User;

/**
 * 使用mockMvc 调用get/post请求地址
 * @author chenzhao
 * @create 2023-05-29 16:33
 */
@RestController
@RequestMapping("/mvcTest")
public class MvcTestController {

    /**
     * get请求接口
     * @return
     */
    @GetMapping
    public String testGet(){
        return "get";
    }

    /**
     * post请求接口
     * @param user
     * @return
     */
    @PostMapping
    public User testPost(@RequestBody User user){
        return user;
    }

    /**
     * getById 请求
     * @param id
     * @return
     */
    @GetMapping("byId")
    public String testGetById(Integer id){
        return "get:"+id;
    }
}
2. MockMvc测试调用get请求接口

两个注解说明

@SpringBootTest // 加测试类上,标明是测试的类

@AutoConfigureMockMvc // 支持对MockMvc对象的注入和配置,测试get/post请求

测试get请求,传参json,添加请求头header,打印请求和响应

package space.goldchen.springboot.test;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletResponse;
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.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import space.goldchen.springboot.entity.User;

import javax.annotation.Resource;

/**
 * 单元测试:测试调用controller接口请求
 *
 * @author chenzhao
 * @create 2023-05-29 16:37
 */
@SpringBootTest
//不用启动项目也可以调用MockMvc测试get/post请求
@AutoConfigureMockMvc
class MvcTestControllerTest {
    @Resource
    private MockMvc mockMvc;

    @Resource
    private ObjectMapper objectMapper;

    /**
     * 测试get请求,传参json,添加请求头header,打印请求和响应
     *
     * @throws Exception
     */
    @Test
    void testGet() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/mvcTest")
                // 可以添加请求头
                .content("{\"username\":\"goldchen\",\"password\":\"123456\"}")
                .header("Authorization", "Bearer ..."))
                // .contentType(MediaType.APPLICATION_JSON)
                // .content("2"))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
    }
}
3. MockMvc测试调用get带参数请求接口

测试get请求,地址栏传参和param传参都行,添加请求头header,获取响应中的String字符串字段,打印请求响应结果

package space.goldchen.springboot.test;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletResponse;
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.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import space.goldchen.springboot.entity.User;

import javax.annotation.Resource;

/**
 * 单元测试:测试调用controller接口请求
 *
 * @author chenzhao
 * @create 2023-05-29 16:37
 */
@SpringBootTest
//不用启动项目也可以调用MockMvc测试get/post请求
@AutoConfigureMockMvc
class MvcTestControllerTest {
    @Resource
    private MockMvc mockMvc;

    @Resource
    private ObjectMapper objectMapper;

    /**
     * 测试get请求,地址栏传参和param传参都行,添加请求头header,获取响应中的String字符串字段,打印请求响应结果
     *
     * @throws Exception
     */
    @Test
    void testGetById() throws Exception {
        int id = 1;
        mockMvc
                //地址栏传参和param传参都行
                .perform(MockMvcRequestBuilders.get("/mvcTest/byId?id=" + id)
                        .header("Authorization", "Bearer ...")
                        .param("id", "" + id)
                        .content("12")
                )
                .andExpect(MockMvcResultMatchers.status().isOk())
                // 返回结果中取值,并且去比较
                .andExpect(MockMvcResultMatchers.content().string("get:" + id))
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
    }
}
4. MockMvc测试调用post请求接口

测试post请求,传参json,添加请求头header,获取响应中的json字段,打印请求响应结果文章来源地址https://www.toymoban.com/news/detail-625956.html

package space.goldchen.springboot.test;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletResponse;
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.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import space.goldchen.springboot.entity.User;

import javax.annotation.Resource;

/**
 * 单元测试:测试调用controller接口请求
 *
 * @author chenzhao
 * @create 2023-05-29 16:37
 */
@SpringBootTest
//不用启动项目也可以调用MockMvc测试get/post请求
@AutoConfigureMockMvc
class MvcTestControllerTest {
    @Resource
    private MockMvc mockMvc;

    @Resource
    private ObjectMapper objectMapper;

    /**
     * 测试post请求,传参json,添加请求头header,获取响应中的json字段,打印请求响应结果
     *
     * @throws Exception
     */
    @Test
    void testPost() throws Exception {
        // json数据封装
        User user = new User();
        user.setUsername("goldchen");
        user.setPassword("123456");
        String contentString = objectMapper.writeValueAsString(user);
        // 接收处理结果
        MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/mvcTest")
                .contentType(MediaType.APPLICATION_JSON)
                // 也可以手写json
                // .content("{\"username\":\"goldchen\",\"password\":\"123456\"}"))
                .content(contentString))
                .andExpect(MockMvcResultMatchers.status().isOk())
                // 可以取出 json的字段值
                .andExpect(MockMvcResultMatchers.jsonPath("$.username")
                        .value("goldchen"))
                .andDo(MockMvcResultHandlers.print()).andReturn();

        // 获取响应结果
        MockHttpServletResponse response = mvcResult.getResponse();
        // 打印作为字符串
        System.out.println(response.getContentAsString());
    }
}

到了这里,关于spring boot 单元测试JUnit5使用MockMvc调用get请求,post请求,设置head请求头,解析返回值json和字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot 实战:JUnit5+MockMvc+Mockito 做好单元测试

    因为继承了 spring-boot-starter-parent ,所以我们依赖的 spring-boot-starter-test 不需要写具体的版本,可以直接集成父级的版本定义。其中, spring-boot-starter-web 是用于提供 REST API 的 web 容器, spring-boot-starter-test 可以提供各种测试框架的, spring-boot-maven-plugin 是将 SpringBoot 应用打包为

    2024年04月15日
    浏览(39)
  • 单元测试-spring-boot-starter-test+junit5

    开发过程中经常需要写单元测试,记录一下单元测试spring-boot-starter-test+junit5的使用 引用jar包 可以对局部函数、方法进行调用测试 可以对API调用进行模拟测试

    2024年01月19日
    浏览(38)
  • Spring Boot 进行 MockMvc 单元测试的实例

    在Spring Boot应用程序中,使用MockMvc进行单元测试是一种有效的方式,可以验证控制器的行为和API的正确性。在这篇博客中,我们将介绍如何使用MockMvc对用户控制器(UserController)进行测试,该控制器涉及用户信息的增删改查操作。 UserController测试类 解释和注意事项 MockMvc的注

    2024年01月17日
    浏览(30)
  • 【单元测试】如何使用 JUnit5 框架?

      Junit5是一个用于在Java平台上进行单元测试的框架。JUnit 5 框架主要由三部分组成:JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform:定义了测试引擎的 API,是 JVM 上用于启动测试框架的基础服务,支持通过 IDE、构建工具、命令行等方式运行单元测试。 JUnit Jupiter:包含

    2024年04月10日
    浏览(38)
  • SpringBoot单元测试--Mockito+Junit5框架使用

    作为程序员为了提前发现代码bug,优化代码; 通常我们写完某个功能模块代码后都需要写单元测试对代码块进行测试(特别是敏捷开发中);Java项目最常用的单元测试框架即为Junit(目前最新版本为Junit5),SpringBoot本身也整合了该框架。在写单元测试时代码块中的调到第三方接口方

    2024年02月02日
    浏览(37)
  • 在 Java 中使用JUnit5进行单元测试和自动化测试

    单元测试和自动化测试是现代软件开发过程中必不可少的环节,可以提高代码质量和开发效率。JUnit5是Java中流行的单元测试框架,本文将介绍如何在Java中使用JUnit5进行单元测试和自动化测试。 2.1 单元测试的基本概念和原理 单元测试是一种测试方法,用于对软件系统中的最

    2024年02月03日
    浏览(32)
  • 如何在 Java 中使用JUnit5进行单元测试和自动化测试

    单元测试和自动化测试是现代软件开发过程中必不可少的环节,可以提高代码质量和开发效率。JUnit5是Java中流行的单元测试框架,本文将介绍如何在Java中使用JUnit5进行单元测试和自动化测试。 单元测试是一种测试方法,用于对软件系统中的最小可测试单元进行测试。这些单

    2024年02月05日
    浏览(45)
  • Spring Boot使用JUnit和Mockito进行Service层单元测试

      在平时的开发当中,一个项目往往包含了大量的方法,可能有成千上万个。如何去保证这些方法产生的结果是我们想要的呢?那么在SpringBoot项目中我们是如何对Service层的方法进行测试的呢?   单元测试是一种软件测试方法,用于测试代码的最小可测试单元。在Java开发

    2024年02月03日
    浏览(44)
  • SpringBoot测试(Junit单元测试、MockMvc测试Http请求 )

    Java知识点总结:想看的可以从这里进入 2.13、测试 测试就是在开发过程中用来检测某一段代码的功能是否能正确执行,Spring Boot 项⽬创建时会默认单元测试框架 spring-boot-test,它Spring Test、JUnit等其他测试框架结合起来(JUnit 5、AssertJ、Hamcrest、Mockito、JSONassert、JsonPath、Spring

    2024年02月06日
    浏览(28)
  • 单元测试框架——Junit5

    Junit是一个开源的用于Java语言的单元测试框架,也是Java方向使用最广泛的单元测试框架。 在pom.xml中引入Junit5相关依赖 @Test :表示一个方法/用例 BeforeEach :表示被注解的方法在其它所有方法执行前都要执行一遍,也就是说其它方法有3个它就要执行3遍 @BeforeAll :表示被注解的

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包