使用MockMvc测试controller

  之前我们测试controller的时候仅仅是作为一个pojo来进行简单的测试,spring3.2后我们可以按照控制器的方式来测试Spring MVC的controller了,这样的话在测试控制器的时候,就没有必要再启动Web服务器和Web浏览器了,下面是测试代码:

import com.darling.controller.TestController;
import org.junit.Test;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

/**
 *   @author
 *   @date 2018/9/5 11:17
 *   @description   测试Spring 3.2新增的新的测试特性
 */
public class TestDemo {

    @Test
    public void testTestController() throws Exception{
        TestController controller = new TestController();
        MockMvc mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/test/testJsp");
        ResultActions actions = mockMvc.perform(builder);
        actions .andExpect(MockMvcResultMatchers.view().name("index"));
    }

}

由代码可以看出我们向TestController发出了一个/testJsp的请求并断言结果视图的名称为index;它首先传递一个TestController实例到MockMvcBuilders.standaloneSetup()并调用build()来构建MockMvc实例。然后它使用MockMvc实例来执行针对“/”的GET请求并设置期望得到的视图名称。如果断言的视图名与controller返回的不一致则抛出异常

  这种测试时spring3.2引入的新特性,记录下来仅作备忘,个人觉得在条件允许的情况下还是比较乐意使用浏览器来测试的;

原文地址:https://www.cnblogs.com/darling2047/p/9591533.html

时间: 2024-08-04 00:40:11

使用MockMvc测试controller的相关文章

springboot利用MockMvc测试controller控制器

主要记录一下控制器的测试,service这些类测试相对简单些(可测试性强) API测试需求比较简单: ① 需要返回正确的http状态码 200 ② 需要返回json数据,并且不能返回未经捕获的系统异常 测试不通过例子 此测试类的部分代码 package cn.taxiong.search.web.controller; import cn.taxiong.search.Application; import cn.taxiong.search.constant.ErrorCodeMsgEnum;

springmvc中使用MockMvc测试controller

示例代码 import com.alibaba.fastjson.JSONObject; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springf

使用MockMvc测试SpringMVC Controller

MockMvc 是springTest提供的对SpringMvc提供的测试工具.这样可以让单元测试不仅仅局限于对Dao和Service 层的测试.同时,也可以测试Controller层.丰富的单元测试的功能.测试时不用频繁重启servlet容器,简化了测试操作. MockMvc需要ServletContext来模拟用户的请求和相应. 首选,需要在测试类头部添加一下Annotation @WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.cl

Spring MVC如何测试Controller(使用springmvc mock测试)

在springmvc中一般的测试用例都是测试service层,今天我来演示下如何使用springmvc mock直接测试controller层代码. 1.什么是mock测试? mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法. 2.为什么要使用mock测试? 使用Mock Object进行测试,主要是用来模拟那些在应用中不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者比较复杂的对象(如JD

Junit测试Controller(MockMVC使用),传输@RequestBody数据解决办法

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

springboot利用mock进行junit单元测试,测试controller

1  spring-boot-starter-test内置mockito,添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 2 示例controller packag

SpringBoot测试Controller层

一.准备工作 1.导入测试依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> 2.Controller层: @RestController("/") public class UserController { @Autow

Junit mockito 测试Controller层方法有Pageable异常

1.问题 在使用MockMVC+Mockito模拟Service层返回的时候,当我们在Controller层中参数方法调用有Pageable对象的时候,我们会发现,我们没办法生成一个Pageable的对象,会报一个Pageable是一个接口的错误.当我们把所有的参数从Pageable接口变成Pageable的实现类PageRequest的时候,所有的方法参数都换成PageRequest,又会出现一个新的错误,且不说PageRequest不能作为参数用于hibernate的分页查询,另一方面,它没

junit基础学习之-测试controller层(2)

准备工作: eclipse本身带有junit4,可以直接build path,加入junit. 连接数据库的配置文件需要修改,之前的文件是采用properties+xml文件的形式,但是在测试的时候因为不能连接服务器,所以需要需要修改配置文件,最好是重新写一个配置文件,把需要的参数直接写出来就好了. 下面是我配置文件,重点是前面,后面就不需要了. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns