首页 > 其他分享 >SpringBoot中使用测试框架MockMvc来模拟HTTP请求测试Controller接口

SpringBoot中使用测试框架MockMvc来模拟HTTP请求测试Controller接口

时间:2023-07-25 10:11:41浏览次数:35  
标签:web HTTP SpringBoot import springframework 测试 org MockMvc

场景

Java中进行单元测试junit.Assert断言、Mockito模拟对象、verify验证模拟结果、Java8中lambda的peek方法使用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/127492361

上面讲了开发过程中一些测试方法。

如果需要在代码中直接测试某个Controller接口,除了每次启动项目后使用postman等测试工具测试外,

还可以使用MockMvc进行测试。

MockMvc

MockMvc 是 Spring 框架中的一个测试框架,用于模拟 HTTP 请求和响应。

MockMvc 可以模拟 Web 应用程序的环境,并且可以测试 Spring MVC 的控制器。

MockMvc 可以让我们测试 Spring MVC 控制器的行为和输出,而无需实际发送 HTTP 请求和接收响应。

MockMvc 提供了一种方式,用于模拟 Spring MVC 的请求和响应,并且可以使用 Spring MVC 的控制器进行测试。

MockMvc 可以模拟 HTTP 请求和响应,包括请求方法、请求头、请求参数、请求体、响应状态、响应头和响应体。

在 SpringBoot 中,我们可以使用 MockMvc 进行 Web 集成测试

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

1、SpringBoot项目中添加如下依赖即可

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

当然SpringBoot所需的其它依赖也需要添加

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

其他业务依赖根据自己需求决定。

2、新建一个测试Controller

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @GetMapping("/test")
    public String test(@RequestParam("orderId") String orderId, String remark){
        return "success";
    }
}

3、新建单元测试方法

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@SpringBootTest
class IdempotenceTest {

    @Autowired
    private WebApplicationContext webApplicationContext;

    @Test
    void test1() throws Exception {
        //初始化MockMvc
        MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
        //循环调用5次进行测试
        for (int i = 1; i <= 5; i++) {
            System.out.println("第"+i+"次调用接口");
            //调用接口
            String result = mockMvc.perform(MockMvcRequestBuilders.get("/test")
                    .accept(MediaType.TEXT_HTML)
                    .param("orderId","001")
                    .param("remark","badao"))
                    .andReturn()
                    .getResponse()
                    .getContentAsString();
            System.out.println(result);
        }
    }
}

这里模拟对以上controller进行5次请求。

4、MockMvc还提供了许多其他的方法,用于模拟HTTP请求和响应,具体可自行查阅其API。

 

一个具体的使用示例可参考

SpringBoot中接口幂等性实现方案-自定义注解+Redis+拦截器实现防止订单重复提交:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131910440

标签:web,HTTP,SpringBoot,import,springframework,测试,org,MockMvc
From: https://www.cnblogs.com/badaoliumangqizhi/p/17579051.html

相关文章

  • jmeter 使用https协议(jmeter不添加ssl证书的解决方案)
    使用https协议时,jmeter不添加ssl证书的解决方法:使用https协议,访问时将域名替换成真实的IP地址及端口号,如下图: ......
  • 浏览器取消强制访问HTTPS
    浏览器开启https重定向,但是你访问的网页默认不能够进行https访问,只可以访问http,那么就需要取消浏览器的默认转发请求谷歌浏览器:chrome://net-internals/#hstsEdge浏览器:edge://net-internals/#hsts......
  • 我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.6.0更新
    什么是rest-api-spring-boot-starterrest-api-spring-boot-starter适用于SpringBootWebAPI快速构建让开发人员快速构建统一规范的业务RestFullAPI不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。动机每次WebAPI常用功能都需要重新写一遍。或者复制之前的项目代码......
  • Redis 集群偶数节点跨地域部署之高可用测试
    笔者目前所在公司存在多套Redis集群:A集群主+从共60个分片,部署在3+3台物理机上,每台机器各承载10个端口主库30个端口在广州,从库30个端口在中山B集群共72个端口,部署架构一模一样上云后,均为广东的某个云厂商的2个可用区,不再使用IDC数据中心,部署架构一......
  • 回归测试
    回归测试求助编辑百科名片回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各......
  • 协议 tcp rpc http websocket
    传输层:tcp,udp应用层:http,grpc,websocket浏览器服务器太多了,互相沟通需要统一的协议,http主要用于B/S如果是公司内部,轻量小巧定制化,用rpchttp是半双工,同一时间,只能一方发送消息,客户发送请求,建立http连接后,通过header可以申请升级到websocket协议 待补充wireshark的抓包分析:......
  • SpringBoot工程官网创建方式
          ......
  • linux下载安装fastdfs和fastdfs与nginx整合、springboot访问fastdfs
    文章目录需求分析分布式文件系统1FastDFS安装FastDFS和nginx整合2.整合java访问fastdfs服务文件上传查询下载测试整合springboot需求分析搭建fastDFS文件服务器1)安装fastDFStracker和storage2)在storageserver上安装nginx在storageserver上安装nginx的目的是对外通过http访问......
  • OkHttp发送请求流程
    OkHttp发送请求流程Request主要包含5个属性,涵盖请求的基本信息:urlmethodheadersbodytagspublicfinalclassRequest{finalHttpUrlurl;finalStringmethod;finalHeadersheaders;final@NullableRequestBodybody;finalMap<Class<?>,Object>tags;......
  • 重学HTTP:理解同源策略和CORS
    ​每次遇到跨域、代理、CORS这几个词都懵懵的,我决定一次把他们都搞明白,以后遇到他们再也不用害怕了。一、什么是同源策略?同源策略是在1995年由Netscape公司引入到浏览器的,目前所有浏览器都支持,它是浏览器最重要的安全保障,目的是严格管理不同网站间相互的资源访问(严格来说是不同......