测试是保证软件质量的关键。

  与 Spring MVC 相关的测试,主要涉及控制器的测试。

  为了测试Web项目通常不需要启动项目,需要一些Servlet相关的一些模拟对象,比如MockMVC、MockHttpServletRequest、MockHttpServletResponse、MockHttpSession等。

  Spring 里,使用 @WebAppConfiguration 指定加载的 ApplicationContext 是一个 WebApplicationContext

  

  测试驱动开发(Test Driven Development ,TDD),先按照需求写一个满足自己预期结果的测试用例,这个测试用例刚开始是失败的测试,随着不断的编码和重构,最终让测试用例通过测试,这样可以保证软件的质量和可控性。

  在 Spring Web程序中使用集成测试:

  首先导入两个测试依赖的包(spring-test、junit):

    

 <properties>
<junit.version>4.11</junit.version>
<spring.version>4.0.6.RELEASE</spring.version>
</properties>
<!-- 测试相关jar包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>

  然后了解一下包结构(点击这里,教你如何在IDEA中建立并修改包结构),就是把 test.class写在哪儿,在哪里执行。

  

  在这里,src/main 目录下的文件是程序运行的主文件,而src/test下的文件,是程序测试的运行文件。

  接下来就可以在src/test/java包下新建一个测试类的。

  在空测试类上,需要有如图的三个注解符号

   @RunWith--用于指定junit运行环境,是junit提供给其他框架测试环境接口扩展,为了便于使用spring的依赖注入,spring提供了org.springframework.test.context.junit4.SpringJUnit4ClassRunner作为Junit测试环境。

   @ContestConfiguration--用于加载spring的配置文件,“classpath:”是固定的,xxxxx.xml是配置文件的名称

   @WebAppConfiguration

1、@WebAppConfiguration注解在此类上,用来声明加载的ApplicationContex是一个WebApplicationContext。它的属性指定的是Web资源的位置,默认为src/main/webapp。

2、MockMvc-模拟MVC对象,通过MockMvcBuilders.webAppContextSetup(this.wac).build()初始化

3、可以在测试用例中注入Spring的Bean

4、可注入WebApplicationConext

5、可注入模拟的http session

6、可注入模拟的http request

7、@Before在测试开始之前进行的初始化工作

8、模拟向/normal进行get请求

9、预期控制返回状态为200

10、预期view的名称为page

Spring MVC的测试的更多相关文章

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

    在springmvc中一般的测试用例都是测试service层,今天我来演示下如何使用springmvc mock直接测试controller层代码. 1.什么是mock测试? mock测试就是在测试过 ...

  2. Spring MVC 异步测试

    从spring3.2开始,支持servlet3的异步请求,这对于处理耗时的请求如缓慢的数据库查询是非常有好处的,不至于很快的耗光servlet的线程池,影响可扩展性. 让我们先来了解一下servlet ...

  3. spring3 jsp页面使用<form:form modelAttribute="xxxx" action="xxxx">报错,附连接数据库的spring MVC annotation 案例

    在写一个使用spring3 的form标签的例子时,一直报错,错误信息为:java.lang.IllegalStateException: Neither BindingResult nor plai ...

  4. Unit Testing of Spring MVC

    试验1:做的条目不发现首先,我们必须确保我们的应用是工作性质所做条目不发现.我们可以写的测试以确保通过以下步骤: 1.配置的模拟对象时抛出一个todonotfoundexception findbyi ...

  5. Unit Testing of Spring MVC Controllers1

    我们的pom.xml文件相关的部分看起来如下: <dependency>    <groupId>com.fasterxml.jackson.core</groupId& ...

  6. 为啥Spring和Spring MVC包扫描要分开?

    背景:       最近在搭建新工程的时候发现有些Spring的配置不是很了解,比如Spring 配置里面明明配置了component-scan,为啥Spring MVC配置文件还需要配置一下,这样岂 ...

  7. Java方式配置Spring MVC

    概述 使用Java方式配置Spring MVC,以及回顾一下Spring MVC的各种用法. Spring MVC简述 关于Spring MVC的介绍网上有很多,这里就不再赘述了,只是要说一下,Spr ...

  8. 针对spring mvc的controller内存马-学习和实验

    1 基础 实际上java内存马的注入已经有很多方式了,这里在学习中动手研究并写了一款spring mvc应用的内存马.一般来说实现无文件落地的java内存马注入,通常是利用反序列化漏洞,所以动手写了一 ...

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

    就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/43 ...

随机推荐

  1. 24B F1 Champions

    传送门 题目 Formula One championship consists of series of races called Grand Prix. After every race driv ...

  2. storm启动nimbus源码分析-nimbus.clj

    nimbus是storm集群的"控制器",是storm集群的重要组成部分.我们可以通用执行bin/storm nimbus >/dev/null 2>&1 &a ...

  3. Entity Framework Code-First(9):DataAnnotations

    DataAnnotations in Code-First: EF Code-First provides a set of DataAnnotation attributes, which you ...

  4. Python短小精悍的Orator基本使用技巧

    基本使用 配置 设置数据库配置参数,创建一个DatabaseManager实例. from orator import DatabaseManager config = { 'mysql': { 'd ...

  5. How to modify rosbag?如何修改rosbag?

    Ubuntu16.04,kinetic 本文示例修改使用rosbag中的frame id 在http://wiki.ros.org/bag_tools中,能找到 change_camera_info. ...

  6. 微信小程序小结(1) ------ 前后端交互及wx.request的简易封装

    微信小程序的应用目前越来越多,不管喜欢与否我们都应该了解一些.废话不多,直接干货. 做项目自然避免不了前后端的交互,小程序在调试过程中需要在先在:小程序公众平台--设置--开发设置中,将要从后台请求的 ...

  7. Linux查看系统位数

    查看linux是多少位的几位方法   方法/步骤     方法一:getconf LONG_BIT 在linux终端输入getconf LONG_BIT命令 如果是32位机器,则结果为32 Linux ...

  8. 水库(树形dp)

    水库 (树形dp) R国有n座城市和n-1条长度为1的双向道路,每条双向道路连接两座城市,城市之间均相互连通.现在你需要维护R国的供水系统.你可以在一些城市修建水库,在第i个城市修建水库需要每年c_i ...

  9. 洛谷P1800 software_NOI导刊2010提高(06)

    P1800 software_NOI导刊2010提高(06) 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术 ...

  10. [Xcode 实际操作]五、使用表格-(4)设置UITableView单元格数据库源

    目录:[Swift]Xcode实际操作 本文将演示如何自定义表格的数据来源. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先添加 ...