这几天在做SpringMVC的项目,现在总结一下在测试的时候碰到的一些问题。


以前做项目,是在较新的MyEclipse(2013)上面进行Maven开发,pom.xml 文件是直接复制的,做测试的时候都是比较顺利的。然而这次,是在Myeclipse 8.5 上面开发,用的是JavaEE5,在测试的时候,就碰到了不少问题,有时候快被搞死!

一般来说,我们给测试类单独一个包,同时给spring一份测试的配置文件(复制production的配置文件,删除不用的组件,如 shiro,ehcache等暂时用不到的)。
我用到的组件版本:
  1. Spring 4.0.6
  2. Hibernate 4
  3. junit 4.8.2
注意,进行注解形式的spring-test,需要引入spring-test-4.0.6.RELEASE.jar
接着,开始别写测试类,这里用一个汽车实体的DAO做例子
首先是Car.java,简单起见,Car就只有name属性。

测试类:
  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @ContextConfiguration(locations = { "classpath*:test/root-context.xml" })
  3. @Transactional(readOnly=false)
  4. public class TestCarDao {
  5. @Autowired
  6. private CarDao dao;
  7. @Test
  8. public void test(){
  9. Car c = new Car();
  10. c.setName("0--0-----00--");
  11. dao.save(c);
  12. }
  13. }
可以看到,使用注解来配置junit还是很方便的。
使用 junit 运行测试类,一开始出现了:java.lang.NoClassDefFoundError: Ljavax.persistence.ForeignKey() 的错误
经排查,发现时javaEE5 的javaee.jar 没有ForeignKey 这个注解。


这时,可以配置一些junit的运行环境,删除javaEE5的引用,如下图所示:


再次运行,如果出现找不到servlet.**** 类的错误,那么可以加入自己的 servlet.api.jar 到项目class path中。
我用的是 :servlet-api-2.5.jar

现在test运行正常。

spring test 是默认事务回滚的,就是说在test中进行的数据库操作,都不会对真实的数据有影响(除了表结构的update操作),这时,如果需要对数据进行修改,可以取消spring 的回滚,在test方法上加入以下注解:
  1. @Rollback(false)


使用junit进行Spring测试的更多相关文章

  1. Maven聚合、Maven仓库jar包以及Spring+MyBatis+JUnit+Maven整合测试的搭建过程

    一.Maven将父项目创建到父项目的内部 在父项目的pom.xml上 点右键,选择maven-->new-->maven module  project 二.Maven聚合 在某个项目的p ...

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

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

  3. Junit/idea Junit支持/Spring test之间的孽世纠葛

    最近应老板要求,研究研究Spring测试相关的东西,力求搞一个方便使用的测试工具,对于一个Spring不熟Junit不懂的人这是一个很大的坑,扫了一边spring test文档没感觉有什么收获,spr ...

  4. Junit和Spring

    @ContextConfiguration 用来指定加载的Spring配置文件的位置,会加载默认配置文件 例如下例会加载:classpath:/com/example/MyTest-context.x ...

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

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

  6. junit单元测试+junit与Spring结合

    配置:右键要加入单元测试的工程,选择properties,然后选择java build path,选择add library,选择junit即可. 编写:右键要测试的class,new一个junit ...

  7. 最“高大上”的Spring测试:Spring Test

    我想给大家介绍一款非常实用.且高端大气上档次的spring测试,在这里,我要强烈推荐使用Spring的Test Context框架,为什么呢?俗话说,“货比三家不上当”,要搞清楚这个问题,我们先来看一 ...

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

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

  9. Spring-test使用JUnit时,测试类autowired报错,create bean error

    Spring-test使用JUnit时,测试类里面使用autowired会报错, 报create bean error...... 但是controller里面@autowired可以正常运行的. 在 ...

随机推荐

  1. Codeforces 622F 「数学数论」「数学规律」

    题意: 给定n和k,求 1 ≤ n ≤ 109, 0 ≤ k ≤ 106 思路: 题目中给的提示是对于给定的k我们可以求出一个最高次为k+1的关于n的通项公式. 根据拉格郎日插值法,我们可以通过k+2 ...

  2. .net中三种数据类型转换区别((int),Int32.Parse() 和 Convert.toInt32() )

    (typename)valuename,是通用方法: Convert类提供了灵活的类型转换封装: Parse方法,适用于向数字类型的转换. 例如,(int),Int32.Parse() 和 Conve ...

  3. (转)C#调用非托管Win 32 DLL

    转载学习收藏,原文地址http://www.cnblogs.com/mywebname/articles/2291876.html 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使 ...

  4. 关于WinCE流接口驱动支持10以上的端口号(COM10)

    一般情况下,WinCE流驱动的索引为0~9.应用程序中,通过CreateFile(_T("XXXN:"),…)打开对应的驱动,N也为0~9.这样看来,似乎在WinCE下同名流驱动个 ...

  5. 怎样调整CODESOFT中条码线的宽度

       CODESOFT是一款功能强大.灵活便捷的标签条码设计打印软件.在使用CODESOFT设计并打印标签,有时会因为打印精度或扫面清晰度等原因,需要调整条形码中行的宽度,即调整条码线宽度.本文,小编 ...

  6. matlab 椭圆方程拟合

    拟合椭圆首先要知道各个点的坐标,然和带入如下公式: x = [59 136 58 137 57 137 56 137 55 138 54 139 53 140 52 141 51 142 51 143 ...

  7. iOS地址编码解析

    - (void)viewDidLoad { [super viewDidLoad]; // 创建地址解析器 self.geocoder = [[CLGeocoder alloc] init]; } - ...

  8. tty -s && mesg n

  9. SSIS Error Code DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR

    将一批Job从一台agent服务器搬到另外一台agent, 没有做任何的修改,但是job执行的时候报错. Error: 2014-07-03 14:42:57.14 Code: 0xC0209303 ...

  10. [zt]Which are the 10 algorithms every computer science student must implement at least once in life?

    More important than algorithms(just problems #$!%), the techniques/concepts residing at the base of ...