项目中用到了testNG作为单元测试工具,至于testNG对比junit有啥好处不太清楚,至少从程序员写testcase来说似乎和junit 4.x并没有太大的区别。但是据说和一些测试工具整合的时候比较方便。ok,这不是重点。
Spring专门为Junit testNG提供了一套测试集成接口类——AbstractSpringContextTests类,对于testNG就是其子类:AbstractTestNGSpringContextTests。Spring和testNG整合后,进行单元测试的时只要test类继承该类,就可以方便的使用spring注入。实现了spring和testNG的无缝整合,我们可以像写普通类那样测试被spring IoC容器所管理的类(否则我们必须在开始执行单元测试前重新加载Spring
beanfactory,再用getBean("xxx")的方式获取IoC容器中类。)
除此以外,对测试类spring beanfactory缓存,使得多个测试类之间可以共享同一个的beanfactory实例,从而减少了重复生成beanfactory,提高了运行效率。
继承该类的测试用例在spring管理的事务中进行,测试完后对数据库的记录不会造成任何影响。你对数据库进行一些操作后,它会自动把数据库回滚,这样就保证了你的测试对于环境没有任何影响
集成代码如下
- @ContextConfiguration
- (locations={"applicationContext.xml"})
-
publicclassTestUserextendsAbstractTestNGSpringContextTests{
- @Autowired
- UserServiceuserService;
- @Test
- publicvoidtest_save_user(){
- Useruser=newUser();
- user.setPassword("123456");
- user.setSex(1);
- user.setPartyName("test1");
- user.setEmail("aa@bb.com");
- userService.save(user);
- }
- @Test
- publicvoidtest_inject_factory(){
- Assert.assertNotNull(userService);
- }
- }
其中最重要的就是@ContextConfiguration。默认的从classpath目录下读取applicationContext.xml作为spring的启动配置文件(对应ClassPathXmlApplicationContext?)。
等同于(locations={"classpath:applicationContext1.xml"})。因此必须确保spring的配置文件在classpath中。
如果有多个spring配置,用逗号进行分隔(locations={"applicationContext.xml", "/applicationContex_transaction.xml"})
另外一种采用filepath定位spring配置文件(对应FileSystemXmlApplicationContext?).
比如在web项目中将相应的配置文件放到WEB-INF目录下"file:WebRoot/WEB-INF/config/applicationContext.xml",或者可以指定绝对路径。
实际问题:
项目中,将配置放在了web-inf/config/目录下对应的xml文件中,但是又在xml文件中对web-inf/config/properties/目录下的几个包括log4j.properties在内的几个properties文件进行了引用。
如果使用file方式指定spring配置文件位置的话,当加载到xml文件中引用的property文件时就会报文件找不到。因为仅仅指定采用file方式读取xml文件,对于对于property文件仍然会去classpath搜索。
解决方法
将Webroot加入到项目的classpath目录中。
或者更好的做法是指定在运行testNG测试时,将webroot加入到classpath中。
Eclipse中 run/run configuration菜单中进行配置
分享到:
相关推荐
详细的描述了testNG集成spring的配置过程,以及示例。
TestNG-Spring-Example,TestNG和Spring进行简单整合
需要安装的工具idea jdk1.8 (mysql,navicat) chromedriver_win32 ...如果看test包,就是用Java+spring boot+selenium+testng+reportng搭的一个测试架构 http://localhost:63342/demo/test-output/html/index.html
该源码包括SpringDataJPA用户信息增删改查操作案例,提供TestNG单元测试工具测试案例,同时还提供Jersey 统一异常处理机制实现Demo案例,以查询分页页码不能为负数为例测试异常处理机制的正确性。
15. spring-test-4.1.1.RELEASE.jar 支持Spring组建JUnit和TestNG的单元测试和集成测试。 16. spring-tx-4.1.1.RELEASE.jar 17. spring-web-4.1.1.RELEASE.jar 包含Web应用开发时,用到Spring框架时所需的核心类,...
10.6 使用BlazeDS和Spring消费面向消息的服务 421 10.6.1 问题 421 10.6.2 解决方案 422 10.6.3 工作原理 422 10.7 将依赖注入带给你的ActionScript客户 434 10.7.1 问题 434 10.7.2 解决方案 434 ...
10.6 使用BlazeDS和Spring消费面向消息的服务 421 10.6.1 问题 421 10.6.2 解决方案 422 10.6.3 工作原理 422 10.7 将依赖注入带给你的ActionScript客户 434 10.7.1 问题 434 10.7.2 解决方案 434 ...
Spring TestNG Selenium 示例一个例子。目标去做相关链接相关励志链接。 一二
Unitils构建在DBUnit与EasyMock项目之上并与JUnit和TestNG相结合,支持数据库测试,支持利用mock对象进行测试并提供与Spring和Hibernate相集成。Unitils设计成以一种高度可配置和松散偶合的框架来添加这些服务到单元...
与FluentLenium最佳整合 ,但你也可以选择使用你想要的。 FluentLenium可用于使您的流畅并易于维护。 FluentLenium为您提供了,可帮助您更快地编写测试。 所有这些方法每天都由项目开发人员维护的商业回归测试...