使用junit进行Spring测试

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

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

一般来说,我们给测试类单独一个包,同时给spring一份测试的配置文件(复制production的配置文件,删除不用的组件,如 shiro,ehcache等暂时用不到的)。
我用到的组件版本:
Spring 4.0.6
Hibernate 4
junit 4.8.2


注意,进行注解形式的spring-test,需要引入spring-test-4.0.6.RELEASE.jar
接着,开始别写测试类,这里用一个汽车实体的DAO做例子
首先是Car.java,简单起见,Car就只有name属性。

测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:test/root-context.xml" })
@Transactional(readOnly=false)
public class TestCarDao {
	@Autowired
	private CarDao dao;
	
	@Test
	public void test(){
		Car c = new Car();
		c.setName("0--0-----00--");
		
		dao.save(c);
	}
}


可以看到,使用注解来配置junit还是很方便的。
使用 junit 运行测试类,一开始出现了:java.lang.NoClassDefFoundError: L javax.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)
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

集成显卡

码字不易,需要您的鼓励😄

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值