Spring-test做数据库操作的单元测试

spring提供了一个做单元测试的方法。我最喜欢的是它的自动事务回滚功能。用起来很爽。

直接看代码

Java代码 Java代码
Java代码
  1. packagecom.ali.gongyi.model.account;
  2. importjunit.framework.Assert;
  3. importorg.junit.Test;
  4. importorg.junit.runner.RunWith;
  5. importorg.springframework.beans.factory.annotation.Autowired;
  6. importorg.springframework.test.annotation.Rollback;
  7. importorg.springframework.test.context.ContextConfiguration;
  8. importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  9. importorg.springframework.test.context.transaction.TransactionConfiguration;
  10. importorg.springframework.transaction.annotation.Transactional;
  11. importcom.ali.gongyi.dao.BaseDao;
  12. /**
  13. *@authorzhenghui
  14. *@version1.0
  15. *@data2011-2-11下午03:22:14
  16. *
  17. */
  18. @RunWith(SpringJUnit4ClassRunner.class)//指定测试用例的运行器这里是指定了Junit4
  19. @ContextConfiguration("classpath:applicationContext.xml")
  20. @TransactionConfiguration(transactionManager="transactionManager",defaultRollback=true)
  21. @Transactional
  22. publicclassTestUserDao{
  23. @Autowired
  24. privateBaseDao<User,Long>userDao=null;
  25. @Test
  26. @Rollback(true)//上面已经设置defaultRollback=true。这里其实可以不用写了
  27. publicvoidtestModifyUser(){
  28. Useruser=userDao.findById(2L);
  29. System.out.println(user.getId());
  30. user.setDisplayName("系统管理员4");
  31. userDao.saveOrUpdate(user);
  32. Assert.assertEquals(userDao.findById(2L).getDisplayName(),"系统管理员4");
  33. }
  34. }
Java代码 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 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需要自己配置。

经验分享 程序员 微信小程序 职场和发展