`

【转】就是这么简单(续)!使用 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 

分享到:
评论

相关推荐

    Spring MVC 简单Demo

    这个"Spring MVC 简单Demo"旨在帮助初学者理解如何设置和运行一个基本的Spring MVC项目。下面,我们将深入探讨Spring MVC的核心概念、工作原理以及如何创建一个简单的示例。 1. **Spring MVC 概述** Spring MVC是...

    Spring MVC简单例子

    10. **单元测试和集成测试**:学习如何使用JUnit和Mockito等工具对Controller和Service层进行单元测试,以及使用Spring Test对整个应用进行集成测试。 通过这个简单的例子,初学者可以全面地了解Spring MVC的工作...

    spring mvc demo

    可以使用 MockMVC 进行 Spring MVC 的模拟测试,对于 Mybatis,可以通过 JUnit 和 Mockito 测试数据库操作。 通过这种整合,开发者可以在 Spring MVC 的控制层直接注入 Mybatis 的 DAO 对象,简化了代码的编写,...

    spring mvc login demo

    首先,Spring MVC 的核心组件包括DispatcherServlet、ModelAndView、Controllers以及各种HandlerMapping和HandlerAdapter。DispatcherServlet是入口点,负责接收HTTP请求并分发到相应的Controller处理。Controller是...

    精通Spring MVC4 电子版_springmuv_

    Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它是一个基于模型-视图-控制器(MVC)架构模式的轻量级Web框架,提供了强大的数据绑定、校验以及灵活的国际化支持。本资源《精通Spring MVC4 ...

    Spring MVC 文件上传下载 后端 - Java.zip

    通过使用DispatcherServlet、Controllers、Models、Views等组件,Spring MVC简化了处理HTTP请求和响应的过程。 2. **文件上传**: - **CommonsMultipartResolver**:Spring MVC通过集成Apache Commons FileUpload...

    Spring 2.0 MVC的应用

    Spring MVC的测试支持使得编写单元测试和集成测试变得简单。我们可以使用`MockMvc`来模拟HTTP请求,测试控制器的行为,而无需部署到服务器。 总结,"FirstSpringWebApp"项目是一个很好的起点,帮助开发者理解...

    spring mvc 项目所需的jar包

    Spring MVC 是一个强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。它基于Spring框架,提供了模型-视图-控制器(MVC)架构模式的实现,简化了Web应用的开发过程。在这个"spring mvc 项目所需的jar包"中...

    Spring MVC简单样例

    在这个例子中,你可能会看到一个简单的HelloWorldController,它只有一个返回"Hello, Spring MVC!"的处理方法。这个例子展示了如何通过Spring MVC将HTTP请求映射到Java方法,并将结果返回给浏览器。 进一步深入,...

    基于spring mvc+spring data+Thymeleaf+mysql的简单工程

    这是一个基于Spring MVC、Spring Data、Thymeleaf和MySQL数据库构建的简单Web应用程序工程。这个项目的核心在于利用这些技术栈来实现数据的CRUD(创建、读取、更新和删除)操作,并通过Web界面进行交互。 **Spring ...

    Spring+MVC+AngularJS例子

    Spring、MVC和AngularJS是Web开发中的三个关键框架,它们各自在不同的层面提供功能,协同工作以构建高效、响应式的应用程序。在这个"Spring+MVC+AngularJS例子"中,我们将深入理解这三个技术如何结合在一起,以创建...

    spring mvc实例项目

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。本实例项目结合了ExtJS2,这是一个前端JavaScript库,用于创建数据驱动的富客户端应用程序。通过...

    Spring MVC A Tutorial Second Edition

    注解型控制器(Annotation-Based Controllers)是Spring MVC 3.0之后引入的特性,它简化了控制器的配置,允许使用注解来定义请求映射和处理请求的方法,使得控制器的代码更加简洁易读。 数据绑定(Data Binding)是...

    spring mvc框架实现添加功能Demo

    以上就是使用Spring MVC和Hibernate实现添加功能的基本流程。实际项目中,你可能需要考虑更多细节,如事务管理、安全性、性能优化等。理解并熟练掌握这些概念,对于开发高效、可维护的Web应用至关重要。

    JakartaEE Spring MVC

    在【描述】中提到的“SpringMVC测试项目”可能是为了演示或实践如何在JakartaEE环境中集成和使用Spring MVC。这样的项目通常会包含以下关键组件: 1. **DispatcherServlet**:作为Spring MVC的核心,它是Web应用...

    spring mvc学习代码

    这个"spring mvc学习代码"的压缩包文件显然包含了使用Spring MVC与Hibernate集成开发Web应用的相关示例和实践。下面我们将深入探讨这些知识点。 1. **Spring MVC**:Spring MVC是Spring框架的一部分,它提供了MVC...

    一个完整的Spring MVC的CRUD操作实例

    在Spring MVC中,我们将利用DispatcherServlet、Controllers、Models、Views以及DAOs等组件来实现这些操作。 1. **项目结构**: 在`spring_mvc_demo`压缩包中,你可能会看到如下结构: - src/main/java:包含业务...

    Pro Spring MVC With Web Flow

    Table of Contents Configuring a Spring Development Environment Spring Framework Fundamentals Web Application Architecture Spring MVC Architecture Implementing Controllers Implementing Controllers ...

Global site tag (gtag.js) - Google Analytics