在写单元测试的时候,一般是对数据库进行增删改查的操作,这个时候,如果之前删除了某条记录,自然后面的程序就找不到这条记录了,所以可以通过配置spring的事务管理或者测试框架来回滚,减少工作量。使用的数据库是postgreSQL和MySQL。
1、创建测试类
创建一个测试用的类,推荐名称为 “被测试类名称 + Test”。
测试类应该继承与 AbstractJUnit4SpringContextTests 或 AbstractTransactionalJUnit4SpringContextTests
对于 AbstractJUnit4springcontextTests 和 AbstractTransactionalJUnit4SpringContextTests 类的选择:
如果再你的测试类中,需要用到事务管理(比如要在测试结果出来之后回滚测试内容),就可以使用AbstractTransactionalJUnit4SpringTests类。事务管理的使用方法和正常使用Spring事务管理是一样的。再此需要注意的是,如果想要使用声明式事务管理,即使用AbstractTransactionalJUnitSpringContextTests类,请在applicationContext.xml文件中加入transactionManager bean:
@Bean
public DataSourceTransactionManager transactionManager(){
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(dataSource());
return transactionManager;
}
如果没有添加上述bean,将会抛出NoSuchBeanDefinitionException,指明 No bean named ‘transactionManager’ is definded
Spring4.2之前的方法
@TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)
Spring 4.2之后的方法
@ContextConfiguration(locations = {"classpath:spring.xml"})
@Rollback//回滚数据库
public class BaseRepositoryTest extends AbstractTransactionalTestNGSpringContextTests {

本文介绍如何在Spring框架下通过配置事务管理来进行单元测试的增删改查操作,确保测试前后数据状态一致。重点讲解了如何利用AbstractTransactionalJUnit4SpringContextTests类和transactionManager bean实现数据库操作后的自动回滚。
493

被折叠的 条评论
为什么被折叠?



