spring提供了一个做单元测试的方法。我最喜欢的是它的自动事务回滚功能。用起来很爽。
直接看代码
- packagecom.ali.gongyi.model.account;
- importjunit.framework.Assert;
- importorg.junit.Test;
- importorg.junit.runner.RunWith;
- importorg.springframework.beans.factory.annotation.Autowired;
- importorg.springframework.test.annotation.Rollback;
- importorg.springframework.test.context.ContextConfiguration;
- importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- importorg.springframework.test.context.transaction.TransactionConfiguration;
- importorg.springframework.transaction.annotation.Transactional;
- importcom.ali.gongyi.dao.BaseDao;
- /**
- *@authorzhenghui
- *@version1.0
- *@data2011-2-11下午03:22:14
- *
- */
- @RunWith(SpringJUnit4ClassRunner.class)//指定测试用例的运行器这里是指定了Junit4
- @ContextConfiguration("classpath:applicationContext.xml")
- @TransactionConfiguration(transactionManager="transactionManager",defaultRollback=true)
- @Transactional
- publicclassTestUserDao{
- @Autowired
- privateBaseDao<User,Long>userDao=null;
- @Test
- @Rollback(true)//上面已经设置defaultRollback=true。这里其实可以不用写了
- publicvoidtestModifyUser(){
- Useruser=userDao.findById(2L);
- System.out.println(user.getId());
- user.setDisplayName("系统管理员4");
- userDao.saveOrUpdate(user);
- Assert.assertEquals(userDao.findById(2L).getDisplayName(),"系统管理员4");
- }
- }
说明
1userDao的实现可以是hibernate,也可以是ibatis (这两个我都做了测试,这种方式都是没有问题的)。当然最主要看重的是自动回滚。
2 transactionManager需要自己配置。