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

接我前面一篇文章关于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 {

    @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(); 我在以后的文章中会介绍到。

参考

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

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

时间: 2024-07-28 15:56:02

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

就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers

就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/4311205.html 接我前面一篇文章关于RestAssured测试Restful web service的, RestAssured还有一个功能, 使用RestAssuredMockMvc 单元测试你的Spring MVC Controllers, 这个MockMvc 是建立在Spring Moc

玩转单元测试之Testing Spring MVC Controllers

玩转单元测试之 Testing Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/4311657.html The Spring MVC Test framework provides first class JUnit support for testing client and server-side Spring MVC code through a fluent API. Typically it loads t

junit4测试 Spring MVC注解方式

本人使用的为junit4进行测试 spring-servlet.xml中使用的为注解扫描的方式 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:

搭建简单的maven项目 集成Spring MVC

第一步: 第二步: 第三步: 第四步: 创建后发现缺失java目录:通过以下方法进行创建 第五步: 原文地址:https://www.cnblogs.com/haiqin/p/9011528.html

Spring3.X 配置----Spring MVC 配置

导论: 什么是Spring MVC? Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架.通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如  JavaServer Pages(JSP)技术.Velocity.

Spring MVC项目功能不完全指北

Spring MVC角色 Spring MVC是一款优秀的控制器框架,我们基于Servlet的思想基础,使用Spring MVC是一件比较简单的事情.只是Spring MVC会实现很多细节化的东西,使得开发的效率很高.Serlvet只是粗浅的处理了HTTP请求,其中并没有牵扯到复杂的需求定制.庆幸的是,Spring MVC实现了很多定制功能并且学习成本不高,而且开发效率大大提高了. 处理HTTP请求 如Servlet中存在doGet和doPost方法一样,如果把Spring MVC的方法声明为

Java之Spring mvc详解

文章大纲 一.Spring mvc介绍二.Spring mvc代码实战三.项目源码下载四.参考文章 一.Spring mvc介绍 1. 什么是springmvc   springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.springmvc是一个基于mvc的web框架. 2. mvc设计模式在b/s系统 下的应用 3. Spring mvc框架执行流程   第一步:发起请求到前端控制器(DispatcherServlet)  第二步:前端控制器

Spring MVC【入门】

MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起 要求开发者不仅要掌握 Java ,还要有高超的前端水平 前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试 代码难以复用 正因为上面的种种弊端,所以很快这种方式就被 Servlet + JSP

spring mvc踩坑记

前言 主要介绍自己在学习spring mvc过程中踩到的一些坑,涉及到当时遇到这个错误是如何思考的,对思路进行总结,下次遇到类似的错误能够提供一些思路甚至快速解决. 环境准备 jdk8,spring4.3.3.RELEASE,spring mvc与spring版本一致,maven3.2.5,tomcat7 目标: 1.测试spring mvc的json参数绑定功能 2.测试spring mvc的返回json功能 项目目录(已经推送到github:https://github.com/Coming