在Eclipse中开发使用Spring IOC的JUnit/TestNG测试用例之详解
转载自:http://blog.csdn.net/radic_feng/article/details/6740438
我们期望能像在产品代码中一样,在测试用例中使用的bean也由Spring Context来管理,这样既可以充分利用Spring IOC的优势,同时又使得测试代码更像产品代码,有更好的测试效果。那么怎么能在运行测试用例时自动启动Spring Contex,从而向测试用例中注入beant呢?本文提供使用JUnit和TestNG两个测试框架启动Spring
Context的步骤。
JUnit框架
JUnit对Spring有天然的支持,只需添加两条Annotation就可以启动Spring Context了,示例代码如下:
- @ContextConfiguration("/META-INF/spring/integration/inbound-gateway-config.xml")
- @RunWith(SpringJUnit4ClassRunner.class)
- public class InboundGatewayTests {
- @Autowired
- private SimpleWebServiceInboundGateway gateway;
- }
仅仅添加@ContextConfiguration,指定Spring Context配置文件的位置以及@RunWith,即可使用指定配置文件中定义的bean。
TestNG框架
如果你的Eclipse还没有安装TestNG插件,请参考安装文档。
与JUnit不同,TestNG没有提供@RunWith注解。TestNG的测试用例需要继承org.springframework.test.context.testng.AbstractTestNGSpringContextTests或org.springframework.test.context.testng.AbstractTestNGSpringContextTests来启动SpringContext,示例代码如下:
- @ContextConfiguration(locations={"/WEB-INF/accountContext.xml"})
- public class TestDao extends AbstractTestNGSpringContextTests {
- @Autowired
- JdbcTemplate jdbcTemplate;
- @Test
- public void init() throws ServletException {
- try {
- jdbcTemplate.execute("create table contacts (name varchar(45),email varchar(45),phone varchar(45))");
- List list = jdbcTemplate.queryForList("select * from contacts");
- } catch (Exception e) {
- e.printStackTrace(System.out);
- }
- }
- }
以下讲解有关@ContextConfiguration参数的设置:
1. 不指定Context文件,@ContextConfiguration
Spring的ContextLoader会判断是否需要加载context,如果需要,默认加载器(GenericXmlContextLoader )会根据用例类名生成一个Spring Context配置文件的名字,例如,如果测试用例为com.example.MyTest,则GenericXmlContextLoader会从“classpath:/com/example/MyTest-context.xml”中加载Context。
2.指定多个Context文件,比如@ContextConfiguration("/META-INF/spring/integration/inbound-gateway-config.xml")
3.指定多个Context文件,比如@ContextConfiguration(locations={"/applicationContext.xml", "/applicationContext-test.xml"})
ContextLoader会从classpath的根目录加载以上文件。
4. 继承关系对Context文件加载的影响,inheritLocations的使用。
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations={"/base-context.xml"})
- public class BaseTest {
- // class body...
- }
- @ContextConfiguration(locations={"/extended-context.xml"})
- public class ExtendedTest extends BaseTest {
- // class body...
- }
在以上代码中ExtendedTest会加载“/base-context.xml” 和“/extended-context.xml”两个文件,因为inheritLocations的默认值是true。
通过以上解释,我们可以看到Spring Context文件是基于classpath来定位的。在Eclipse下,classpath的设定往往和build环境下不同,怎么将build环境下的Context文件设定到@ContextConfiguration中呢?步骤如下:
- 点击Run->Run Configurations...
- 选择你要运行的测试用例的运行配置项,比如InContainerTests,然后点击User Entries,然后点击Advanced,在弹出的窗口中选择Add External Folder,点击确定后可以选择任意目录。你可以基于Context文件相对于该目录的位置配置@ContextConfiguration中的参数。

在Eclipse中开发使用Spring IOC的JUnit/TestNG测试用例之详解的更多相关文章
- 如何在Eclipse中正确安装Jetty插件并初步使用(图文详解)
不多说,直接上干货! 最近在做一个Storm项目,需要用到Jetty来进行展示.它类似于Tomcat. 一.eclipse中jetty插件安装 打开eclipse,依次点击菜单Help->Ecl ...
- 如何在Eclipse/Myeclipse/Scala IDEA for Eclipse 中正确删除已经下载过的插件(图文详解)
不多说,直接上干货! 见 Eclipse/Myeclipse/Scala IDEA for Eclipse里两种添加插件的方法(在线和离线) 第一步 :在菜单栏中,找到help-------insta ...
- Spring IOC -bean对象的生命周期详解
生命周期执行的过程如下:1) spring对bean进行实例化,默认bean是单例2) spring对bean进行依赖注入3) 如果bean实现了BeanNameAware接口,spring将bean ...
- 老李分享:Eclipse中开发性能测试loadrunner脚本
老李分享:Eclipse中开发性能测试loadrunner脚本 前篇我分享了如何用loadrunner搭建javauser的性能测试脚本环境,本次我来告诉大家如何在eclipse开发loadrunne ...
- 在Eclipse中开发C/C++项目
摘要:通过本文你将获得如何在Eclipse平台上开发C/C++项目的总体认识.虽然Eclipse主要被用来开发Java项目,但它的框架使得它很容易实现对其他开发语言的支持.在这篇文章里,你将学会如何使 ...
- Spring IOC 方式结合TESTGN测试用例,测试简单java的命令模式
java命令模式: 可以命令("请求")封装成一个对象,一个命令对象通过在特定的接收着上绑定一组动作来封装一个请求.命令对象直接把执行动作和接收者包进对象中,只对外暴露出执行方法的 ...
- Spring、SpringMVC、SpringData + JPA 整合详解
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7759874.html ------------------------------------ ...
- Spring Boot 启动(二) 配置详解
Spring Boot 启动(二) 配置详解 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Boot 配置 ...
- Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)
通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...
随机推荐
- KETTLE设置变量
一.kettle变量类型 kettle变量分为: 1.环境变量 通过 set variables组件设置变量,范围可以是:JVM变量.作业变量.父作业变量.根作业变量.使用时通过${var}或 %%v ...
- linux awk,sort,uniq,wc,cut命令详解
1.awk awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 $ 表示当前行 $ 表示第一列 NF 表示一共有多少列 $NF 表示最 ...
- KNN算法之图像处理二
1.看了诸多博客,初步得到结论是:KNN不适合做图像分类. 2.如果偏要用此方法进行图像分类,距离计算为:对应的每个像素代表的像素值进行绝对差值计算,最后求和.这就是“图像的距离”
- 机器学习实战第二章----KNN
tile的使用方法 tile(A,n)的功能是把A数组重复n次(可以在列方向,也可以在行方向) argsort()函数 argsort()函数返回的是数组中值从大到小的索引值 dict.get()函数 ...
- html、JSP运行原理
HTML运行原理 1.本地运行 所谓本地运行就是直接用 浏览器打开 2.远程访问的原理示意图: 何为协议?计算机互相通信(网络)的规则.常见的协议有 http .smtp. ftp.pop等 ...
- python爬虫调用搜索引擎及图片爬取实战
实战三-向搜索引擎提交搜索请求 关键点:利用搜索引擎提供的接口 百度的接口:wd="要搜索的内容" 360的接口:q="要搜索的内容" 所以我们只要把我们提交给 ...
- hdu1010--Tempter of the Bone(迷宫)
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1010 Tempter of the Bone Time Limit: 2000/1000 MS (Jav ...
- POJ题目分类推荐 (很好很有层次感)
著名题单,最初来源不详.直接来源:http://blog.csdn.net/a1dark/article/details/11714009 OJ上的一些水题(可用来练手和增加自信) (POJ 3299 ...
- alpha冲6
队名:日不落战队 安琪(队长) 今天完成的任务 回收站前端界面. 明天的计划 查看个人信息界面. 还剩下的任务 信息修改前端界面. 设置界面. 遇到的困难 模拟机莫名其妙就崩了,调试了很久,后在队友的 ...
- 解决Ubuntu(Linux)平台下Sublime Text 3 安装中文输入支持库后 开启gnome-terminal报错的问题
在Ubuntu下安装Sublim Text3后发现无法输入中文,按照此链接的方法解决后.然后用下列代码配置C++的编译系统: { "cmd":["g++",&q ...