专栏首页低调小熊猫SpringBoot(十五):MockMVC-web单元测试

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

简介

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

使用方法

添加依赖

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

编写测试代码

@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

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

本文分享自微信公众号 - 低调小熊猫(Mr_AoDeng),作者:aodeng

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Dubbo(二):zookeeper 注册中心

    Dubbo 支持 zkclient 和 curator 两种 Zookeeper 客户端实现:

    低调小熊猫
  • Spring Boot(十七): 集成 Quartz

    以前我写过spring自带的定时任务SpringBoot(十):定时任务 https://aodeng.cc/archives/springbootshi

    低调小熊猫
  • 经典设计模式(二):单例模式

    单例模式确保一个类只有一个实例,并提供一个全局访问点,上班偷偷写的文章,所以请仔细看注释

    低调小熊猫
  • JS中判断null、undefined与NaN的方法

    写了个 str ="s"++;  然后出现Nan,找了一会。  收集资料如下判断: 1.判断undefined: 1 2 3 4 va...

    庞小明
  • 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度。有的同学表示不是很理解原理,为什么传统的机器...

    Charlotte77
  • python基础知识——函数

    函数其实就是一段可以多次调用的代码。 1、函数的定义 格式 def 函数名(参数1[ = 默认值1], 参数2[ = 默认值2], ...): ... ...

    zhaozhiyong
  • 卷积神经网络CNN原理详解(一)——基本原理

    作者:Charlotte77数学系的数据挖掘民工 博客专栏:http://www.cnblogs.com/charlotte77/ 个人公众号:Charlott...

    企鹅号小编
  • python基础知识——函数

    在Python中,任何的变量都是对象,所以参数只支持引用传递的方式,在这样的情况下,形式参数和实际参数都指向的是内存中的同一个存储空间。

    zhaozhiyong
  • nodejs最简单的几行代码实现http输出文件

    小贝壳
  • maven编译时如何忽略单元测试

     官方文档描述:http://maven.apache.org/plugins-archives/maven-surefire-plugin-2.12.4/ex...

    阿豪聊干货

扫码关注云+社区

领取腾讯云代金券