我正在对数据库进行一些测试,并且想激活回滚,因此在每次测试后我都不必重置数据,但是到目前为止,我的所有尝试都是徒劳的。回滚注释将被忽略,数据将被删除。
我正在使用 Spring jdbc 和 junit5
有人有主意吗?
下面是我的测试班
在类和方法上均@Rollback->失败 @EnableTransactionManagement / @Transactionnal->失败
@Transactional
@Rollback
@ContextConfiguration
@EnableTransactionManagement
class ComptabiliteDaoImplTest extends DBTestCase {
private ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext("/com/dummy/myerp/consumer/applicationContextTest.xml");
private ComptabiliteDao comptabiliteDao;
@Override
protected IDataSet getDataSet() throws Exception {
return new FlatXmlDataSetBuilder().build(new FileInputStream("dataset.xml"));
}
@BeforeEach
void initDao() {
comptabiliteDao = new ComptabiliteDaoImpl();
}
@Test
@Rollback
@Transactional
//@Disabled
void deleteEcritureComptable() {
comptabiliteDao.deleteEcritureComptable(3);
}
}
这是我的数据库上下文:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- ==================== Consumer ==================== -->
<!-- AbstractDbConsumer -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="com.dummy.myerp.consumer.db.AbstractDbConsumer"/>
<property name="targetMethod" value="configure"/>
<property name="arguments">
<map>
<entry value-ref="dataSourceMYERP">
<key>
<value type="com.dummy.myerp.consumer.db.DataSourcesEnum">MYERP</value>
</key>
</entry>
</map>
</property>
</bean>
<!-- Enable Annotation based Declarative Transaction Management -->
<tx:annotation-driven proxy-target-class="true"
transaction-manager="transactionManager" />
<!-- Creating TransactionManager Bean, since JDBC we are creating of type
DataSourceTransactionManager -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceMYERP" />
</bean>
<!-- dataSource configuration -->
<bean id="dataSourceMYERP"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://127.0.0.1:9032/db_myerp"/>
<property name="username" value="usr_myerp"/>
<property name="password" value="myerp"/>
</bean>
<!-- dataSource configuration -->
<!-- ==================== Consumer-Proxy ==================== -->
<!-- ConsumerHelper -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="com.dummy.myerp.consumer.ConsumerHelper"/>
<property name="targetMethod" value="configure"/>
<property name="arguments">
<list>
<ref bean="DaoProxy"/>
</list>
</property>
</bean>
<!-- DaoProxy -->
<bean id="DaoProxy" class="com.dummy.myerp.consumer.dao.impl.DaoProxyImpl" factory-method="getInstance">
<property name="comptabiliteDao" ref="ComptabiliteDaoImpl"/>
</bean>
<!-- ========== SQL ========== -->
<import resource="sqlContext.xml"/>
</beans>
谢谢!