我们以前要进行单元测试,必须先得到ApplicationContext对象,再通过它得到业务对象,非常麻烦,重复代码也多.基于spring3的单元测试很好的解决了这个问题

基于spring3的单元测试主要用到了下面几个注解

@ContextConfiguration指定配置文件的路径,这个注解用在类上

@Resource 往测试类注入bean,这个bean必须在配置文件中配置,这个注解用在属性或set方法上

@Repeat 指定测试方法重复执行的次数,用在测试方法上

@Timed指定测试方法在多长时间执行完,如果在指定时间测试方法没有执行完,会抛异常

测试类除了可以使用以上的注解,同时要继承AbstractJUnit4SpringContextTests,只有继承这个类,才能从spring容器中得到注入对象

1.普通的单元测试

2.脱离web容器的springMVC的测试

传统认为,web应用的测试因为涉及到web组件,需要web容器的支持,这给测试带来复杂性.可不可以脱离web容器对web应用进行测试呢?spring告诉你可以.

Spring自身提供了一个Mock实现:它可以轻松的对Web组件进行单元测试,就象测试POJO(普通Java对象)一样简单.它在J2EE的WEB端为每个关键接口提供了一个Mock实现

A.   MockHttpServletRequest:HttpServletRequest接口的mock实现。

B.  MockHttpServletResponse:HttpServletResponse接口的mock实现。

C. MockHttpSession:HttpSession接口的mock实现。

......

测试代码如下

controlle类:

测试类:

spring测试实例的更多相关文章

  1. 一个简单的Spring测试的例子

    在做测试的时候我们用到Junit Case,当我们的项目中使用了Sring的时候,我们应该怎么使用spring容器去管理我的测试用例呢?现在我们用一个简单的例子来展示这个过程. 1 首先我们新建一个普 ...

  2. spring得到实例和new一个实例,哪个快?

    spring配置的bean是默认单例,那么在程序中,得到一个实例一定比创建一个实例的速度快,也更加省资源.今天实际测试的时候发现,new 一个对象比spring得到一个对象快多了.后面自己又加了个单例 ...

  3. Spring Security4实例(Java config版)——ajax登录,自定义验证

    本文源码请看这里 相关文章: Spring Security4实例(Java config 版) -- Remember-Me 首先添加起步依赖(如果不是springboot项目,自行切换为Sprin ...

  4. Spring Aop实例@Aspect、@Before、@AfterReturning@Around 注解方式配置

    用过spring框架进行开发的人,多多少少会使用过它的AOP功能,都知道有@Before.@Around和@After等advice.最近,为了实现项目中的输出日志和权限控制这两个需求,我也使用到了A ...

  5. Spring入门(二)— IOC注解、Spring测试、AOP入门

    一.Spring整合Servlet背后的细节 1. 为什么要在web.xml中配置listener <listener> <listener-class>org.springf ...

  6. Spring-----注解开发和Spring测试单元

    一.注解开发 导入jar包;spring-aop-xxx.jar 导入约束:(在官方文档xsd-configuration.html可找) <beans xmlns="http://w ...

  7. Spring事物实例

    Spring事务实例: entity实体类: public class Accounts { private int accountid; private String accountname; pr ...

  8. JMeter学习-026-JMeter 分布式(远程)参数化测试实例

    以前文所述对文章详情的HTTP请求进行性能测试为例.日常实际场景中,不可能所有的人都在同时访问一篇文章,而是多人访问不同的文章,因而需要对文章编号进行参数化,以更好的模拟日常的性能测试场景.同时,因文 ...

  9. webservice测试实例

    webservice测试实例(LR8.1) 接口声明:这个接口是sina的短信服务接口,我只是用来做脚本学习使用,不会对其产生压力:希望读者也只是用来进行录制学习,而不是产生压力. 接口文档:http ...

随机推荐

  1. HDU 1325(并查集)

    Is It A Tree? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. 入侵91网直到拿下服务器#并泄露150w+用户信息

    在补天看到一厂商 首先挖到一处注入 http://www.91taoke.com/index.php?m=Dayi&a=answer&aid=26313 此处注入是dba权限 打算使用 ...

  3. python开发_filecmp

    filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单.python标准库还提供了difflib模块用于比较文件的内容.关于difflib模块,且听下回分解. filecmp ...

  4. 常用Linux命令集锦-ls命令

    1.命令格式:ls [选项] [目录名] 2.常用参数 -a:列出该目录下所有文件(包含隐藏文件). -A:列出该目录下除了隐藏文件的所有文件. -l:以行显示目录下的所有文件.输出信息从左到右分别是 ...

  5. HTML5 Plus移动App(5+App)开发入门指南

    HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实现与原生App同样强大的功能和 ...

  6. Linux下简单分析请求有没有进到本机的工具tcpdump(网络接口的数据包的头信息)

    可以通过这个工具快速分析出一个请求到底有没有进入到本机.信息有点简单,对于前期的分析比较有帮助.而对于详细的分析可以借助iptables的raw表进行日志分析. 参考: http://man.linu ...

  7. Git 报错:git - error: RPC failed; curl 18 transfer closed with outstanding read data remaining 解决方案

    error: RPC failed; curl 18 transfer closed with outstanding read data remaining because have error w ...

  8. debian下安装mysql

    apt-get install mysql-client mysql-server 中间会要你设置password,设置后后就自己主动启动mysql了 能够用ps -ef|grep mysql 这样能 ...

  9. DotNet和DotNet Core

    EF 1.0 ---EF6.0 都是code firstmodel ,model model first model,database first model, EF7 是DOTNET CORE重框版 ...

  10. Android Studio如何集成Genymotion

    转自:http://blog.csdn.net/hyr83960944/article/details/37900383 Android Studio集成Genymotion比在Eclipse中集成简 ...