博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers(转)
阅读量:6800 次
发布时间:2019-06-26

本文共 3011 字,大约阅读时间需要 10 分钟。

 

接我前面一篇文章关于RestAssured测试Restful web service的, RestAssured还有一个功能, 使用RestAssuredMockMvc 单元测试你的Spring MVC Controllers, 这个MockMvc 是建立在Spring MockMvc基础上的, 其目的是让我们用起来更便捷。

 

Getting Ready

com.jayway.restassured
spring-mock-mvc
2.4.0
test
junit
junit
4.11
test
org.hamcrest
hamcrest-core
1.3
test
org.hamcrest
hamcrest-library
1.3
test

 

Example

下面是我们要测试的Controller

package com.wadeshop.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class GreetingController {    private static final String template = "Hello, %s!";    @RequestMapping(value = "/greeting", method = RequestMethod.GET)    @ResponseBody     public Greeting greeting(@RequestParam(value="name", required=false, defaultValue="World") String name) {        return new Greeting(String.format(template, name));    }}

 

Greeting 类 如下

public class Greeting {        private final String content;        public String getContent() {        return content;    }     public Greeting(String content) {        this.content = content;    }    }

 

##转载注明出处: 

 

接下来就是创建Spring MVC 测试类了

package com.wadeshop.controller;import static com.jayway.restassured.module.mockmvc.RestAssuredMockMvc.given;import static org.hamcrest.Matchers.equalTo;import org.junit.Before;import org.junit.Test;import com.jayway.restassured.module.mockmvc.RestAssuredMockMvc;public class GreetingControllerTest {    @Before    public void configured() {        RestAssuredMockMvc.standaloneSetup(new GreetingController());    }    @Test    public void test1() {        given().               param("name", "Johan").         when().               get("/greeting").         then().               statusCode(200).               body("content", equalTo("Hello, Johan!"));    }        @Test    public void test2() {        given().               param("name", "").         when().               get("/greeting").         then().               statusCode(200).               body("content", equalTo("Hello, World!"));    }}

 

单元测试过程无非就这些步骤:

1. 准备测试环境, 上面的例子就是使用 standalone setup 初始化MockMvc, 传入被测Controller

2. 传入参数构造请求并且调用

3. 验证结果

 

执行结果如下

 

是不是很简单?

 

这种方式其实就是纯粹的单元测试,如果想模拟真实的Spring MVC, 走Spring MVC完整流程,比如Dispatcher servlet, 类型转换,数据绑定等等, 则需要用MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); 我在以后的文章中会介绍到。

 

参考

 

##转载注明出处: 

 

你可能感兴趣的文章
PHP学习笔记【11】--PHP数组
查看>>
Hibernate N+1/1+N问题
查看>>
Nginx的反向代理及负载均衡
查看>>
Shell 十三问学习笔记5
查看>>
华为PPP链路认证
查看>>
Zend Server 安装配置
查看>>
wuzhicms后台菜单的添加
查看>>
hadoop搭建
查看>>
修改默认defatu.prop
查看>>
我的友情链接
查看>>
【技术碰撞激情,“博”出精彩人生!】2013年度IT博客大赛开幕
查看>>
KeyMob--后者居上的移动广告聚合平台
查看>>
eclipse maven source 乱码
查看>>
Linux系统下UDP发送和接收广播消息小例子
查看>>
每天尝试改变一点点!
查看>>
KNN(K-Nearest Neighbor)最邻近规则分类
查看>>
IntelliJ IDEA 2016.1破解码一枚
查看>>
metasploit ***测试笔记(meterpreter篇)
查看>>
HTTP基础
查看>>
JavaSE学习笔记(五)——类与对象
查看>>