美文网首页java开发
Controller进行单元测试

Controller进行单元测试

作者: 欢乐时光欢乐你我 | 来源:发表于2017-06-28 16:27 被阅读5次

概述

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

简介
  MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。

运行配置

RunWith(SpringJUnit4ClassRunner.class): 表示使用Spring Test组件进行单元测试;
WebAppConfiguration: 使用这个Annotate会在跑单元测试的时候真实的启一个web服务,然后开始调用Controller的Rest API,待单元测试跑完之后再将web服务停掉;
ContextConfiguration: 指定Bean的配置文件信息,可以有多种方式,这个例子使用的是文件路径形式,如果有多个配置文件,可以将括号中的信息配置为一个字符串数组来表示;
基本框架

/**
 * 演示MockMVC使用
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:**web-config.xml")
@WebAppConfiguration
public class MockMvcTest {
    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext webApplicationContext;

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

测试逻辑

校验Controller处理之后,请求是否为成功状态,返回的内容是否包含了:"{'foo':'bar'}"字符串。

1 mockMvc调用perform,调用controller的业务处理逻辑
2 perform返回ResultActions,返回操作结果,通过ResultActions,提供了统一的验证方式。
3 使用StatusResultMatchers对请求结果进行验证
4 使用ContentResultMatchers对请求返回的内容进行验证

/**
 * 演示MockMVC使用
 * @author zhanyongzhi
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:**web-config.xml")
@WebAppConfiguration
public class MockMvcTest {
    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext webApplicationContext;

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

    @Test
    public void demo() throws Exception {
        mockMvc.perform(get("/demo/test").accept(MediaType.parseMediaType("application/json;charset=UTF-8")))
               .andExpect(status().isOk())
               .andExpect(content().contentType("application/json;charset=UTF-8"))
               .andExpect(content().json("{'foo':'bar'}"));
    }
}

相关文章

  • Controller进行单元测试

    概述 对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http...

  • SpringBoot-单元测试

    本文主要介绍如何对SpringBoot进行Service和Controller进行单元测试 Jar依赖 Servi...

  • SpringMVC-单元测试

    良好的开发习惯从单元测试开始。基于Web开发的单元测试可以分为三层进行,Controller层的单元测试、Serv...

  • Mock测试

    简介 SpringMVC单元测试的独立测试;对模块进行集成测试时,希望能够通过输入URL对Controller进行...

  • Spring Boot 单元测试

    一、使用mock进行单元测试 Spring框架提供了MockMvc对象,可以在服务端完成对Controller的启...

  • (第三讲)使用JUnit对Spring Boot中的Rest C

    (第三讲)使用JUnit对Spring Boot中的Rest Controller进行单元测试 本次教程主要讲解如...

  • SpringBoot+SpringDataJPA+SpringB

    SpringBoot+SpringDataJPA+SpringBoot单元测试 没写页面,controller层通...

  • Spring+SpringMVC+Mybatis Web集成单元

    主要是记录对Controller层进行单元测试的过程中遇到的问题 问题1:运行测试用例报错 java.lang.I...

  • Spring对Controller的单元测试技术

    针对Controller进行单元测试的技术关键点在于需要创造一个MockMvc对象,而此对象的创建需要使用到Web...

  • springboot 接口单元测试

    在使用springboot框架开发接口时,都免不了写接口单元测试。 1.controller单元测试(业务类参与)...

网友评论

    本文标题:Controller进行单元测试

    本文链接:https://www.haomeiwen.com/subject/ykiucxtx.html