Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot(十五):MockMVC-web单元测试

SpringBoot(十五):MockMVC-web单元测试

作者头像
低调小熊猫
发布于 2020-06-05 09:57:12
发布于 2020-06-05 09:57:12
95400
代码可运行
举报
文章被收录于专栏:低调小熊猫低调小熊猫
运行总次数:0
代码可运行

简介

开发一个优秀的系统,单元测试也是必不可少的,Spring Boot 对单元测试也做了一些支持,MockMVC就是之一,可以模拟web端的post,get请求,测试也能得到详细的过程

使用方法

添加依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

编写测试代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootTest
public class Springboot13StarterTestApplicationTests {

    private MockMvc mockMvc;

    //初始化资源
    @Before
    public void setMockMvc() throws Exception{
        mockMvc= MockMvcBuilders.standaloneSetup(new HelloController()).build();
    }

    @Test
    public void test() throws Exception{
        mockMvc.perform(MockMvcRequestBuilders.post("/hello?name=低调小熊猫")
                .accept(MediaType.APPLICATION_JSON_UTF8)).andDo(print());
    }
    @Test
    public void test2() throws Exception{
        mockMvc.perform(MockMvcRequestBuilders.post("/hello?name=低调小熊猫")
                .accept(MediaType.APPLICATION_JSON_UTF8))
                .andExpect(MockMvcResultMatchers.content().string(Matchers.containsString("低调小熊猫")));

    }
    @Test
    public void contextLoads() {
        System.out.println("低调小熊猫");
    }

}

代码作用accept(MediaType.APPLICATIONJSONUTF8)) 设置编码格式 andDo(print()) //会将请求和相应的过程都打印出来 Matchers.containsString("str"),判断返回的结果集中是否包含“str”这个字符串

运行测试

我们运行第一个test

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MockHttpServletRequest:
      HTTP Method = POST
      Request URI = /hello
       Parameters = {name=[低调小熊猫]}
          Headers = {Accept=[application/json;charset=UTF-8]}
             Body = <no character encoding set>
    Session Attrs = {}

Handler:
             Type = com.hope.controller.HelloController
           Method = public java.lang.String com.hope.controller.HelloController.hello(java.lang.String)

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = null
             View = null
            Model = null

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = {Content-Type=[application/json;charset=UTF-8], Content-Length=[21]}
     Content type = application/json;charset=UTF-8
             Body = 你好低调小熊猫
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

当看到“Body = 你好低调小熊猫”,表示成功了,还能看到整个请求详细信息

第二个test,会打印我们请求的结果

第三个测试,就是普通的测试了

以上代码只是spring-boot-starter-test 组件的一部分功能,还有很多好玩的一起学吧

源码

https://github.com/java-aodeng/hope

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 低调小熊猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot基础之MockMvc单元测试
SpringBoot创建的Maven项目中,会默认添加spring-boot-starter-test依赖。在《5分钟快速上手SpringBoot》中编写的单元测试使用了MockMvc。本篇文章就围绕MockMvc在SpringBoot中的使用进行讲解。
程序新视界
2019/05/26
11.9K0
Spring MVC服务端单元测试工具MockMvc
是指对软件中的最小可测试单元进行检查和验证;作为后台开发,我们对外提供的每一个RESTful API就是一个最小的可测试单元,为了确保可用性,我们在接口对外提供服务之前要尽可能的保证接口是按预期的要求在执行,因此,单元测试就是开发过程中必不可少的一项工作;完善的单元测试技能快速定位开发过程中的BUG,同时也可以减少因为BUG导致对接过程带来的大量人员沟通所消耗的时间成本。当需要持续性完善及优化代码的时候,一个好的单元测试用例能够帮助我们快速的确认修改是否对预期产生影响。
一行Java
2022/04/06
9860
Spring MVC服务端单元测试工具MockMvc
SpringBoot单元测试(实例)
这里我们分别使用@WebMvcTest和@SpringBootTest两种方式测试一个控制器方法是否满足测试用例。
别团等shy哥发育
2023/02/25
1.3K0
SpringBoot单元测试(实例)
【保姆级教程】SpringBoot单元测试,文末介绍Postman的基本使用
1. 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。在Java中单元测试的最小单元是类。
Java团长
2021/01/20
2.2K1
【保姆级教程】SpringBoot单元测试,文末介绍Postman的基本使用
Spring Boot使用单元测试
在这篇文章中,我们将深入介绍如何在 Spring Boot 中进行单元测试,以及一些常用的工具和技巧。我们将侧重于以下几个方面:
默 语
2024/11/20
2720
MockMvc -你需要一个测试基类
用例虽然能执行成功,但是还存在着不少问题。最为严重的,就是代码冗余度太高。两次模拟的HTTP请求,虽然请求的方式和发送内容不同,但是整个请求的组装、发送和结果验证过程是基本一致的。因此,我们可以考虑重构上述用例,将公共部分提取到父类中供其余测试用例使用。
Criss@陈磊
2019/09/17
1.1K0
【保姆级教程】Spring Boot 单元测试
\1. 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。在Java中单元测试的最小单元是类。
芋道源码
2021/01/25
31.8K0
【保姆级教程】Spring Boot 单元测试
基于SpringBoot聊单元测试的分层
之前分享了关于质量内建的话题关于单元测试引起了大家的讨论,对于单元测试这件事情本身是比较熟悉的,但大家的反馈是比较难执行,矛盾在于很多测试做不了单元测试,或者让测试做性价比不是很高,这件事情推给开发之后又容易不了了之,其中一个很重要的点是,测试和开发没有同频对话的能力,各种细节难以敲定,落地的实际价值不容易度量,所以这篇文章我就基于常见的springboot框架,聊一聊单元测试分层的几种实践方式,从测试的视角给同学们一些知识面的拓展,也让大家熟悉下单元测试的常见玩法。
周辰晨
2022/09/20
8530
基于SpringBoot聊单元测试的分层
Spring Security技术栈开发企业级认证与授权(二)使用Spring MVC开发RESTful API
RESTful一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。本篇博客主要讲述使用Spring MVC开发RESTful风格的API。 一、传统API和RESTful API 传统的API和RESTful API如下表所示: | 行为 | 传统API | RESTful API | 方法 | | -------- | ------------- | ---------
itlemon
2020/04/03
1.1K0
Spring Security项目Spring MVC开发RESTful API(二)
查询请求 常用注解 @RestController 标明此Controller提供RestAPI @RequestMapping 映射http请求url到java方法 @RequestParam 映射请求参数到java方法到参数 @PageableDefault 指定分页参数默认值 编写一个简单的UserController类 @RestController @RequestMapping(value = "/user") public class UserController { @Req
楠楠
2019/03/20
8290
Spring Security项目Spring MVC开发RESTful API(二)
一分钟上手SpringBootTest,单元测试如此简单
您好,我是码农飞哥,感谢您阅读本文!本文主要讲述如何在SpringBoot框架上进行单元测试。也就是使用SpringBootTest进行单元测试。
码农飞哥
2021/08/18
2K0
单元测试不止Junit,会MockMvc才是高手!
在前面的章节我们介绍过 Junit 的使用,也了解过 spring-test,今天我们来了解一个新玩意 -- mock 测试。这里仅仅做一个入门,对返回视图和返回 Json 数据的方法进行测试演示,不会把所有的方法都介绍到,具体文档详见链接:Mock Test,本章节主要讲解以下两部分内容:
java思维导图
2019/09/17
2.1K0
单元测试不止Junit,会MockMvc才是高手!
SpringBoot_07_Springboot test 使用mockito进行web测试
一、前言 使用mockito测试框架可以方便的进行web测试 二、用法实例 package com.ray.weixin.qy.controller; import com.ray.weixin.qy.ApplicationTests; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.springframework.http.MediaType; import static org.springframework.t
shirayner
2018/08/10
9050
SpringBoot restful api的单元测试
1.添加Springboot测试注解 @RunWith(SpringRunner.class) @SpringBootTest public class UserControllerTest { } 2.伪造mvc环境 // 注入Spring 工厂 @Autowired private WebApplicationContext wac; //伪造mvc环境 private MockMvc mockMvc; @Before public void setup()
Meet相识
2018/09/12
7600
SpringBoot 单元测试
添加了 spring-boot-starter-test 依赖 BaseControllerTest package com.test; import org.hamcrest.Matcher; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.sp
qubianzhong
2019/06/14
1.1K0
如何对Spring MVC中的Controller进行单元测试
对Controller进行单元测试是Spring框架原生就支持的能力,它可以模拟HTTP客户端发起对服务地址的请求,可以不用借助于诸如Postman这样的外部工具就能完成对接口的测试。 具体来讲,是由Spring框架中的spring-test模块提供的实现,详见MockMvc。
编程随笔
2022/04/29
2.6K0
单元测试
简介 @RequestBody方式 Controller /** * 药品索引--通过doctorTeamHot * @param searchRequest * @return */ @RequestMapping(value = "/searchDrugSpu") public RpcResponse searchDrugSpu(@RequestBody DrugSearchRequest searchRequest) { Integer size = searchRequest.g
HLee
2020/12/31
7580
单元测试
Spring Boot应用的测试——Mockito
Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试;生成测试数据初始化数据库用于测试;Spring Boot可以跟BDD(Behavier Driven Development)工具、Cucumber和Spock协同工作,对应用程序进行测试。
阿杜
2018/08/06
1.4K0
Spring Boot应用的测试——Mockito
Spring Boot & 单元测试
本文主要介绍Spring Boot如何完成各种不同类型的单元测试 Spring基本单元测试 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 测试代码 @RunWith(SpringRunner.class) //启动Spring @
十毛
2019/03/27
2.8K0
RESTful API,你真理解了吗?
RESTful API并不是什么框架,他也并不是某段啥代码,他单纯的就是一种规范,一个标准。一旦涉及带规范、标准,就是一个很空泛概念,一开始很难理解真正的特点,然后就很难将其与传统的API区分开来;
一行Java
2022/04/06
4240
RESTful API,你真理解了吗?
相关推荐
SpringBoot基础之MockMvc单元测试
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验