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

Getting Ready

<dependency><groupId>com.jayway.restassured</groupId><artifactId>spring-mock-mvc</artifactId><version>2.4.0</version><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- Optional --><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>1.3</version><scope>test</scope></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-library</artifactId><version>1.3</version><scope>test</scope></dependency>

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;@Controller
public 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;}}

##转载注明出处:http://www.cnblogs.com/wade-xu/p/4311205.html

接下来就是创建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 {@Beforepublic void configured() {RestAssuredMockMvc.standaloneSetup(new GreetingController());}@Testpublic void test1() {given().param("name", "Johan").when().get("/greeting").then().statusCode(200).body("content", equalTo("Hello, Johan!"));}@Testpublic 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(); 我在以后的文章中会介绍到。

参考

https://code.google.com/p/rest-assured/wiki/Usage#Spring_Mock_Mvc_Module

##转载注明出处:http://www.cnblogs.com/wade-xu/p/4311205.html

就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers(转)相关推荐

  1. 将经过身份验证的用户注入Spring MVC @Controllers

    可以使用@AuthenticationPrincipal批注和AuthenticationPrincipalArgumentResolver这是Spring MVS MethodArgumentRes ...

  2. spring mvc+junit

    为什么80%的码农都做不了架构师?>>>    spring mvc的简单单元测试,说白了就是测试spring mvc的controller. 先参考两篇帖子: 1.http://s ...

  3. 如何在Spring和Spring MVC项目中进行测试

    Spring框架概述 Spring大约包含了20个模块,这些模块组成了核心容器(Core Container).数据访问/集成(Data Access/Integration).Web.AOP(面向切 ...

  4. Spring MVC测试框架入门–第1部分

    最新推出的主要Spring框架是Spring MVC测试框架,Spring Guys声称它是"一流的JUnit支持,可通过流畅的API测试客户端和服务器端Spring MVC代码" ...

  5. Spring MVC控制器JUnit测试

    JUnit测试Spring MVC控制器并非易事 . 但是最近,一个新项目 (即将在Spring推出)提供了新工具来简化此工作. 这篇文章说明了如何通过JUnit测试来测试一个简单的控制器. 该代码是 ...

  6. 14.6 Spring MVC 测试框架(翻译)

    14.6 Spring MVC 测试框架(每天翻译一点点) Spring MVC测试框架对 Spring MVC 代码提供一流的测试支持 ,它拥有一个 fluent API ,可以和JUnit, Te ...

  7. junit 测试mvc_Spring MVC控制器JUnit测试

    junit 测试mvc JUnit测试Spring MVC控制器并非易事 . 但是最近,一个新项目 (即将在Spring推出)提供了新的工具来简化此工作. 这篇文章说明了如何通过JUnit测试来测试一 ...

  8. Spring MVC 安全示例

    Spring MVC 安全示例 欢迎使用UserDetailsS​​ervice的Spring安全性示例.在上一篇文章中,我们学习了如何在Web应用程序中使用Spring Security.今天我们将 ...

  9. Spring验证示例 - Spring MVC Form Validator

    Spring验证示例 - Spring MVC Form Validator 当我们在任何Web应用程序中接受用户输入时,就有必要对它们进行验证.我们可以使用JavaScript验证客户端的用户输入, ...

最新文章

  1. Java面向对象:覆写与重载
  2. synchronized底层是怎么实现的?年薪超过80万!
  3. 返乡置业?多数人将掉入陷阱
  4. mysql 多数据库事务_多数据库事务处理
  5. 前端学习(3279):循环 遍历 2
  6. 【软件开发底层知识修炼】十六 快速学习GDB调试三 使用GDB的数据断点监测变量是否改变
  7. C语言之文件读写探究(六):fscanf、fprintf(格式化读写文件)
  8. 举例说明TCP/IP
  9. ANSYS18.2安装教程
  10. sqlserver卸载不完全导致安装失败
  11. android开发之路-----------转自任玉刚大神
  12. 颜色透明度16进制对照表
  13. 基于android的影音设计,基于Android系统的影音播放器设 - 音响技术 - 电子发烧友网...
  14. 除夕最炫烟花代码----跨年必备合集
  15. Kesci:Tensorflow 实现 LSTM——时间序列预测(超详细)
  16. 板绘技巧:水晶怎么画?如何画出晶莹剔透的效果?
  17. 使用Perl编写协议分析脚本 z
  18. 2008服务器文件夹镜像,【玩转腾讯云】导入镜像-Windows 2008 R2 Datacenter
  19. CPU、操作系统的32位与64位
  20. EEPROM 编程器

热门文章

  1. 领域驱动设计实践(一)(转)
  2. Oracle数据库的基本语法
  3. 发布 EasyTrac 0.1.0.11b2
  4. 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法...
  5. No entry found for dependency in Cartfile.
  6. Object-C 有私有变量?私有方法?
  7. java以太网通讯西门子plc300_西门子300以太网通讯-工业支持中心-西门子中国
  8. WordPress插件扫描工具plecost
  9. Xcode 7.0正式版发布了
  10. hive值乘以0.01保留一位小数_Hive窗口函数01-SUM、MIN、MAX、AVG