MockMVC测试Controller中常见的请求方式

使用MockMvc测试 Controller 概述   对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,这样会导致测试无法进行,为了可以对Controller进行测试,可以通过引入MockMVC进行解决。 简介   MockMvc实现了对Http请求的模拟,能够直接使用网络的... 阅读详情
TestController.java
@RestController
public class TestController {

    private final String PATH = "D:\\Develop\\JavaEE\\laboratory";

    @GetMapping(value = "/mockTestA")
    public String mockTestA(@RequestParam("a") String a,
                            @RequestParam("b") String b) {
        return a + b;
    }

    @PostMapping(value = "/mockTestB")
    public String mockTestB(@RequestParam(value = "a", defaultValue = "1") String a,
                            @RequestParam(value = "b", defaultValue = "2") String b) {
        return a + b;
    }

    @PostMapping(value = "/mockTestC")
    public User mockTestC(@RequestBody User user) {
        return user;
    }

    @PostMapping(value = "/file")
    public String file(MultipartFile file) throws IOException {
        File localFile = new File(PATH, "test.txt");

        file.transferTo(localFile);

        return file.getName();
    }
    
}
User.java
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private String id;

    private String username;
}
TestControllerTest
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestControllerTest {

    @Autowired
    private WebApplicationContext wac;

    private MockMvc mockMvc;

    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    }

    @Test
    public void mockTestA() throws Exception {
        String result = mockMvc.perform(get("/mockTestA")
                .param("a", "1")        // 添加参数
                .param("b", "2")
                .contentType(MediaType.APPLICATION_JSON_UTF8))      // 设置数据格式
                .andDo(print())     // 打印输出发出请求的详细信息
                .andExpect(status().isOk())     // 对返回值进行断言
                .andReturn().getResponse().getContentAsString();        // 获取方法的返回值

        Assert.assertEquals("12", result);
    }

    @Test
    public void mockTestB() throws Exception {
        String result = mockMvc.perform(post("/mockTestB")
                .param("a", "10")
                .param("b", "11")
                .contentType(MediaType.APPLICATION_JSON_UTF8))
                .andDo(print())
                .andExpect(status().isOk())
                .andReturn().getResponse().getContentAsString();

        Assert.assertEquals("1011", result);
    }

    @Test
    public void mockTestC() throws Exception {
        Map<String, String> map = new HashMap<>();
        map.put("id", "123");
        map.put("username", "tom");
        String content = JSONObject.toJSONString(map);

        String result = mockMvc.perform(post("/mockTestC")
                .contentType(MediaType.APPLICATION_JSON_UTF8)
                .content(content))
                .andDo(print())
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.id").value("123"))
                .andReturn().getResponse().getContentAsString();

        Assert.assertNotNull(result);
    }

    @Test
    public void file() throws Exception {
        String result = mockMvc.perform(fileUpload("/file")
                .file(new MockMultipartFile("file", "test.txt",
                        "multipart/form-data",
                        "hello upload".getBytes("UTF-8"))))
                .andDo(print())
                .andExpect(status().isOk())
                .andReturn().getResponse().getContentAsString();
        Assert.assertEquals("file", result);
    }
}
SpringBoot+MockMvc测试Controller笔记整理 基础框架:Springboot(版本信息:1.5.6.RELEASE) 环境信息:JDK1.8 测试jar包:spring-boot-starter-test 之前在其它项目见过使用Mock进行单元测试,SpringMvc环境下可以直接模拟请求进来Controller的测试,相比常用的Sping Junit和Spring TestNG等也有一定的可借鉴之处, 本篇结合相关资料进行Mock测 阅读详情

相关推荐

SpringBoot使用MockMvc对Controller层进行单元测试

MockMvc 是 Spring 框架中用于测试 Spring MVC 控制器的一个重要工具。它提供了一个强大的 API,使得开发者能够模拟 HTTP 请求并验证响应,而无需实际启动服务器。Mockito 是 GitHub 上使用最广泛的 Mocking 框架。它提供简洁的 API 来测试。Mockito 简单易学、可读性强、验证语法简洁。在单元测试中,虽然对于一些功能可以通过模拟 Servlet 内置对象予以实现,但是对于一些特殊的功能必须通过访问指定 URL 地址才能予以实现。

pan_junbiao的博客 4692

mockMvc使用教程

转载:https://www.cnblogs.com/zengls/p/11316454.html

sky198989的博客 769

常规波束形成——时域波束形成、频域波束形成

本文介绍了波束成形,包括时域波束成形和频域波束成形,并解释了在实现过程可能存在疑惑的相位补偿。

Candy_Editor的博客 3663

mockMVC单元测试(SpringBoot+Spring Security+Jwt)

传对象的情况 /** * 1、mockMvc.perform执行一个请求。 * 2、MockMvcRequestBuilders.get("XXX")构造一个请求。 * 3、ResultActions.param添加请求传值 * 4、ResultActions.accept(MediaType.TEXT_HTML_VALUE))设置返回类型 * 5、ResultActions.andExpect添加执行完成后的断言。 * 6、ResultActions.andDo添加一个结果处理器,

weixin_44742328的博客 1810

STM32超声波避障小车硬件设计与实时测距实现

超声波测距是嵌入式系统中经典的环境感知技术,其原理基于声波在空气中的传播时间与距离的线性关系,通过精确计时实现非接触式距离测量。该技术具备成本低、抗光干扰强、算法简洁等优势,广泛应用于智能小车、机器人避障、液位监测等场景。工程落地的关键在于硬件信号完整性(如5V/3.3V电平匹配)、微秒级定时精度(依赖高稳定外部晶振与输入捕获模式)以及强干扰环境下的数据鲁棒性(需软硬协同滤波)。本文以STM32F103C8T6为平台,深入解析HC-SR04模块的时序闭环控制、TIM3输入捕获双沿测量、L298N电机状态机驱

weixin_42578963的博客 296

GEO芯片数据下载和探针ID转换(保姆级教程)

R语言安装、GEO芯片数据下载、探针ID转换

qq_43138237的博客 3万+

springBoot中“MockMvc”的进行Controller进行单元测试:application/octet-stream' not supported问题小结...

解决方案:这个问题其实是Content-type的问题,只需要在相关的代码加入相关Content-type中就可以了,代码如下: mockMvc.perform(post("/user") // 路径 .contentType(MediaType.APPLICATION_JSON) //用contentType表示具体请求中的媒体类型信息,MediaType.APPLICA...

WGH100817的博客 1167

高数 | 【极限与等价无穷小】两个重要极限 & 经典错误 & 什么情况下求极限可以直接带入

一. 第一个重要极限 二. 第二个重要极限 三. 导数定义式 全文见【高等数学】两个重要的极限 - 知乎

"You are worthy! You can do it!" 6万+

小结---RestTemplate使用Post传递与MultipartFile

小结---RestTemplate使用Post传递与MultipartFile

一只Java小白 1409

Python中的串口通信库pyserial(基础)

pyserial是一个跨平台的库,可以在多个操作系统上使用,包括Windows、Linux和MacOS。:flushInput方法用于清除输入缓冲区中的所有数据,flushOutput方法用于清除输出缓冲区中的所有待发送数据。:PySerial允许在创建Serial对象后,通过修改对象的属性来设置串口参数,如波特率、数据位、校验位和停止位。同时,也提供了方法或属性来检查串口的状态,如是否已打开。:sendBreak方法用于向串口发送一个BREAK信号,这可以用于向连接的设备发送一个中断或重置信号。

weixin_44217158的博客 1万+

RK3588 部署 YOLO26 目标检测:PT → ONNX → RKNN 全流程

YOLO26n 在 RK3588 上 INT8 量化后 NPU 推理约 15ms,系统 FPS 约 55,可以覆盖边缘端实时检测需求。模型从 PT 到 RKNN 的转换要用opset=11避免算子兼容问题。先用 YOLO26n + 640 输入跑通全链路,确认推理结果正确后再做性能调优。

m0_64661770的博客 306

SpringBoot使用MockMVC单元测试Controller

对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如启动速度慢,测试验证不方便,依赖网络环境等,这样会导致测试无法进行,为了可以对Controller进行测试,可以。MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。

2201_76100073的博客 2026

基于Qt C++开发一套大疆农业无人机的AI飞控系统

如果需要补充**多机协同作业代码**、**农田测绘数据导出**、**作业数据统计大屏**或**移动端地面站适配**功能,可以告知具体需求,我会针对性完善。"开启" : "关闭") << "喷洒,流量:" << flowRate << "L/min";emit errorOccurred(QString("SDK初始化失败,错误码:%1").arg((int)ret));report += QString("问题区域数量:%1\n").arg(info.problemAreas.size());

寒寒豆豆软件公司的博客 382

Controller的测试(MockMvc的使用)

控制层接口的测试,可以用浏览器、PostMan或者Idea自带的工具(Tools-->HTTP Client-->Test RESTFul Web Service)进行测试都可以。当以上方式都不容易进行的测试的时候,可以使用MockMvc对象,mock 对象就是真实对象在调试期间的代替品。 下面介绍下MockMvc的简单使用: Controller的方法如下: @...

river66的博客 1234

Python 爬虫教程:美食网站 + 社交平台餐馆评论抓取(评分提取 + 情感分析)

在当今数字化时代,数据无处不在,而爬虫技术则是获取数据的强大工具之一。无论是市场调研、学术研究还是个人兴趣探索,爬虫都能帮助我们从海量的网络信息中提取有价值的数据。本文将通过一个实战案例,带领大家学习如何使用 Python 爬虫技术抓取美食网站和社交平台上的餐馆评论,并进行评分提取与情感分析。通过这个项目,你将掌握爬虫的基本原理、数据解析、以及如何结合情感分析技术来挖掘数据背后的洞察。

u014481728的博客 311

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

使用MockMvc测试Spring mvc Controller

概述     对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,这样会导致测试无法进行,为了可以对Controller进行测试,可以通过引入MockMVC进行解决。 简介    MockMvc实现了对Http请求的模

zhang289202241的专栏 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

使用MockMvc来代替RestTemplate对Controller进行单元测试

对Controller进行单元测试可以通过RestTemplat发送一个http请求来实现。也可以通过MockMvc来实现,二者还是有很大区别的,参考Difference between MockMvc and RestTemplate in integration tests 简单来说,二者的直接区别是: 使用MockMvc,通常是设置一个完整的Web应用程序上下文,来模拟HTTP请求和响应...

mryang125的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring Boot + MockMvc 测试Controller Api接口

MockMvc在RESTful中的参数问题 为了可以对Controller进行测试,我们引入了MockMVC。 ,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境, 而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便 有以下controller需要测试 package com.example.junittestdemo; import java.io.IOException; import java.util.List;...

dream_heheda的博客 1789

PowerMock+Mockito+MockMvc实现Controller,Service,Mapper全覆盖测试

目录 使用H2数据库测试 使用PowerMock和Mockito进行Service层测试简单方法如何测试 复杂方法如何测试 使用MockMvc进行Controller层单元测试简单方法如何测试 需要登陆或者权限的方法如何测试 使用SpringTest进行Dao层测试 1.使用H2数据库测试配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xml

ZyManTou的博客 9919

springboot之mockMVC测试Controller

SpringMVC单元测试-MockMvcMockMvc简介测试环境导入依赖测试代码必坑指南 MockMvc简介 MockMvc实现对Http请求的模拟,可以方便对Controller进行测试,使得测试速度快、不依赖网络环境,而且提供验证的工具,使得请求的验证统一而且很方便 测试环境 jdk 1.8 springboot 2.x junit4 导入依赖 <dependency> <groupId>org.springframework.boot</gr

bulinstar的博客 446

SpringBoot+MockMvc测试controller

目录 一 MockMvc 引入依赖 二MockMvc 实现原理 2.1集成 Web环境方式 2.2独立测试方式 三MockMvc 接口测试实现 3.1 controller 类 3.2 test 类 四MockMvc 最佳实践总结 五 参考文档 一 MockMvc 引入依赖 <dependency> <groupId>org.spr...

javaTalk 1731

在springboot 项目中测试controller层的调用的时候 使用Postman和MockMvc是两种常见的方法

Postman适合进行全栈集成测试,确保所有部分协同工作,同时适合手动测试和调试API。MockMvc适合编写自动化单元测试,快速且能隔离测试Controller层逻辑,适用于开发阶段频繁进行的回归测试。通常,在实际项目中,两者会结合使用:在开发和单元测试阶段使用MockMvc进行快速、自动化的测试;在集成测试和手动调试阶段使用Postman验证整个系统的功能。

QZGzzz的博客 1300

Junit测试Controller(MockMVC使用),以及JUnit Generator使用方法

一、单元测试的目的   简单来说就是在我们增加或者改动一些代码以后对所有逻辑的一个检测,尤其是在我们后期修改后(不论是增加新功能,修改bug),都可以做到重新测试的工作。以减少我们在发布的时候出现更过甚至是出现之前解决了的问题再次重现。   这里主要是使用MockMvc对我们的系统的Controller进行单元测试。   对数据库的操作使用事务实现回滚,及对数据库的增删改方法结束后将会还远数...

oneStep->next=CloserNow 4989
上一篇: Angular4 去掉url中的#,并解决刷新时的404问题
下一篇: SpringBoot接入Ueditor编辑器
占位符号
博客等级 码龄10年 75粉丝 53原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值