Spring MVC的测试
测试是保证软件质量的关键。
与 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的测试的更多相关文章
- Spring MVC如何测试Controller(使用springmvc mock测试)
在springmvc中一般的测试用例都是测试service层,今天我来演示下如何使用springmvc mock直接测试controller层代码. 1.什么是mock测试? mock测试就是在测试过 ...
- Spring MVC 异步测试
从spring3.2开始,支持servlet3的异步请求,这对于处理耗时的请求如缓慢的数据库查询是非常有好处的,不至于很快的耗光servlet的线程池,影响可扩展性. 让我们先来了解一下servlet ...
- spring3 jsp页面使用<form:form modelAttribute="xxxx" action="xxxx">报错,附连接数据库的spring MVC annotation 案例
在写一个使用spring3 的form标签的例子时,一直报错,错误信息为:java.lang.IllegalStateException: Neither BindingResult nor plai ...
- Unit Testing of Spring MVC
试验1:做的条目不发现首先,我们必须确保我们的应用是工作性质所做条目不发现.我们可以写的测试以确保通过以下步骤: 1.配置的模拟对象时抛出一个todonotfoundexception findbyi ...
- Unit Testing of Spring MVC Controllers1
我们的pom.xml文件相关的部分看起来如下: <dependency> <groupId>com.fasterxml.jackson.core</groupId& ...
- 为啥Spring和Spring MVC包扫描要分开?
背景: 最近在搭建新工程的时候发现有些Spring的配置不是很了解,比如Spring 配置里面明明配置了component-scan,为啥Spring MVC配置文件还需要配置一下,这样岂 ...
- Java方式配置Spring MVC
概述 使用Java方式配置Spring MVC,以及回顾一下Spring MVC的各种用法. Spring MVC简述 关于Spring MVC的介绍网上有很多,这里就不再赘述了,只是要说一下,Spr ...
- 针对spring mvc的controller内存马-学习和实验
1 基础 实际上java内存马的注入已经有很多方式了,这里在学习中动手研究并写了一款spring mvc应用的内存马.一般来说实现无文件落地的java内存马注入,通常是利用反序列化漏洞,所以动手写了一 ...
- 就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers
就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/43 ...
随机推荐
- qboimathtest1 t2 配对
题目 有1~n一共n个数,n为偶数.小Q要把这n个数随机地两两配对.令每一对的权值为它们两个数的和.小Q想要知道这n/2对里最大的权值的期望是多少.请输出答案对10^9+7取模的值. [输入] 一行一 ...
- C#String.Split (string[], StringSplitOptions)中的StringSplitOptions是什么意思,看了msdn还是不懂?
MSDN上面这样子写的: [ComVisibleAttribute(false)] public string[] Split(string[] separator,StringSplitOption ...
- C#文件监控工具(对追加内容的监控并输出)
C#文件监控(对追加内容的监控并输出),适合监控某个目录下的日志文件(log),开发初衷是linux上部署在jexus部署网站后想实时输出jexus的log和自己站点的log文件(已经测试通过在mon ...
- Java 课上的语录
Java 课上的语录 在用系统类库的类的时候啊,你是不是充分的理解这个系统类库的类.比如这个 ArrayList 你是不是知道它里面有这样那样这样那样的函数,能够帮你做各种各样的事情.很重要,你不知道 ...
- weex前端式写法解决方案---eros
前言 如果想用前端的方式写一个app怎么办呢? 如果你用的是 React,那么它已经有了一个比较完善的体系跟社区.如果你用的是Vue又不想花费太多时间去重新学习React,那么目前比较靠谱的方案就是w ...
- 依托http-headers的 sql注入和时间盲注
机缘巧合接触了一点关于sql注入的网络安全问题 依托 headers 的 sql 注入 一般来说大家都很清楚用户输入的危险性,通常会对用户表单提交的数据进行过滤(引号转码). 但是如果写过网络爬虫,那 ...
- 洛谷P2828 Switching on the Lights(开关灯)
P2828 Switching on the Lights(开关灯) 题目背景 来源:usaco-2015-dec Farm John 最近新建了一批巨大的牛棚.这些牛棚构成了一个N*N的矩形网络.( ...
- 洛谷P1065 作业调度方案
P1065 作业调度方案 题目描述 我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成.每个工件的每道工序都有指定的加工时间. 每个工件的每个工序称为一个操作 ...
- EIGRP-8-路由器的邻接关系
EIGRP路由器之间会建立并维护邻接关系.EIGRP在默认情况下会动态发现邻居路由器.也可以通过工程师手动配置(静态)发现邻居. 通过向目的组播组地址224.0.0.10或FF02: : A发送E ...
- 打造H5动感影集的爱恨情仇–动画性能篇
“你听说过动感影集么?” 动感影集是QQ空间新功能,可以将静态的图片轻松转变为动态的视频集,且载体是HTML5(简称H5)页面,意味着可以随时分享到空间或朋友圈给好友欣赏! 移动端区别于PC年代的相册 ...