news 2026/4/23 12:46:38

Springboot项目:使用MockMvc测试get和post接口(含单个和多个请求参数场景)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Springboot项目:使用MockMvc测试get和post接口(含单个和多个请求参数场景)

一、引入MockMvc依赖

使用MockMvc,必须要引入依赖

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

二、具体演示

1、GET请求(单个参数)

测试类代码

@ExtendWith(MockitoExtension.class) class AppControllerTest { private MockMvc mockMvc; @Mock private IDB2PatrolResultService idb2PatrolResultService; @InjectMocks private DB2PatrolResultController db2PatrolResultController; @BeforeEach void setUp() { this.mockMvc = MockMvcBuilders.standaloneSetup(db2PatrolResultController).build(); } @Test void testGet() throws Exception { this.mockMvc.perform(MockMvcRequestBuilders.get("/dbm/patrolResult/trigger/{itemCode}","121")) .andExpect(status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } }

controller类代码

@GetMapping("/trigger/{itemCode}") public R<Void> execSchedule(@PathVariable("itemCode") String itemCode) { return patrolResultService.execSchedule(itemCode); }

2、GET请求(多个参数)

测试类代码:

@ExtendWith(MockitoExtension.class) class AppControllerTest { private MockMvc mockMvc; @Mock private IDB2PatrolResultService idb2PatrolResultService; @InjectMocks private DB2PatrolResultController db2PatrolResultController; @BeforeEach void setUp() { this.mockMvc = MockMvcBuilders.standaloneSetup(db2PatrolResultController).build(); } @Test void testPatrolResult() throws Exception { PatrolQueryConfig patrolQueryConfig = new PatrolQueryConfig(); patrolQueryConfig.setItemLevel("0"); patrolQueryConfig.setStatusType("0"); String jsonStr = JSONUtil.toJsonStr(patrolQueryConfig); this.mockMvc.perform(MockMvcRequestBuilders.get("/dbm/patrolResult/list") .param("itemLevel","1") .param("statusType","2")) .andExpect(status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } }

controller类代码

@GetMapping("/list") public TableDataInfo<PatrolResult> getRunStatsDataAggs(PatrolQueryConfig patrolQueryConfig) { List<PatrolResult> patrolResults = patrolResultService.getPatrolHisResultAggs(patrolQueryConfig); return TableDataInfo.build(patrolResults); }

3、POST请求(多个参数)

测试类代码

@ExtendWith(MockitoExtension.class) class AppControllerTest { private MockMvc mockMvc; @Mock private IDB2PatrolResultService idb2PatrolResultService; @InjectMocks private DB2PatrolResultController db2PatrolResultController; @BeforeEach void setUp() { this.mockMvc = MockMvcBuilders.standaloneSetup(db2PatrolResultController).build(); } @Test void testPost() throws Exception { PatrolQueryConfig patrolQueryConfig = new PatrolQueryConfig(); patrolQueryConfig.setItemLevel("0"); patrolQueryConfig.setStatusType("0"); String jsonStr = JSONUtil.toJsonStr(patrolQueryConfig); this.mockMvc.perform(MockMvcRequestBuilders.post("/dbm/patrolResult/list") .contentType(MediaType.APPLICATION_JSON_VALUE) .content(jsonStr) .header(HttpHeaders.ACCEPT,"application/json")) .andExpect(status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } }

controller类代码

@PostMapping("/list") public TableDataInfo<PatrolResult> getRunStatsDataAggs(@RequestBody PatrolQueryConfig patrolQueryConfig) { List<PatrolResult> patrolResults = patrolResultService.getPatrolHisResultAggs(patrolQueryConfig); return TableDataInfo.build(patrolResults); }

三、总结

  • 使用MockMvc可以做到controller层的测试。
  • 在初始化mockMvc的时候:
    (1)如果想测试单个controller
    mockMvc = MockMvcBuilders.standaloneSetup(mockMvcController).build();
    (2)如果想测试所有controller
    mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 9:21:55

Zotero PDF预览插件终极指南:7个简单步骤实现高效文献管理

Zotero PDF预览插件终极指南&#xff1a;7个简单步骤实现高效文献管理 【免费下载链接】zotero-pdf-preview Preview Zotero attachments in the library view. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf-preview 在学术研究过程中&#xff0c;快速预览P…

作者头像 李华
网站建设 2026/4/18 8:37:43

PDF-Extract-Kit实战:构建智能文档处理流水线

PDF-Extract-Kit实战&#xff1a;构建智能文档处理流水线 1. 引言&#xff1a;智能文档处理的现实挑战与PDF-Extract-Kit的价值 在科研、教育、出版和企业办公等场景中&#xff0c;PDF文档承载了大量结构化与非结构化信息。然而&#xff0c;传统方式提取PDF内容时面临诸多痛点…

作者头像 李华
网站建设 2026/4/20 19:11:16

PDF-Extract-Kit性能优化:提升PDF处理速度5倍的秘诀

PDF-Extract-Kit性能优化&#xff1a;提升PDF处理速度5倍的秘诀 1. 背景与挑战&#xff1a;PDF智能提取中的性能瓶颈 1.1 PDF-Extract-Kit工具箱的技术定位 PDF-Extract-Kit是由开发者“科哥”基于开源生态二次开发构建的一套PDF智能内容提取工具箱&#xff0c;集成了布局检…

作者头像 李华
网站建设 2026/4/22 14:35:55

SharpKeys键盘映射工具:Windows键位自定义完全指南

SharpKeys键盘映射工具&#xff1a;Windows键位自定义完全指南 【免费下载链接】sharpkeys SharpKeys is a utility that manages a Registry key that allows Windows to remap one key to any other key. 项目地址: https://gitcode.com/gh_mirrors/sh/sharpkeys 想要…

作者头像 李华
网站建设 2026/4/15 11:08:44

PDF-Extract-Kit保姆级教程:结果验证与质量评估

PDF-Extract-Kit保姆级教程&#xff1a;结果验证与质量评估 1. 引言 1.1 技术背景与应用场景 在科研、教育和出版领域&#xff0c;PDF文档是知识传递的主要载体。然而&#xff0c;PDF的非结构化特性使得内容提取&#xff08;尤其是公式、表格等复杂元素&#xff09;成为一项…

作者头像 李华