在寫單元測試的時候,一般是對數據庫進行增刪改查的操作,這個時候,如果之前刪除了某條記錄,自然後面的程序就找不到這條記錄了,所以可以通過配置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 {