我在Spring 3.0.5中使用基于XML的事务配置。移动到基于注释不是一种选择。基于XML的配置中@TransactionConfiguration(rollback = true)的等价物是什么?
目前,我没有在我的JUnit中强制执行回滚,因此我的数据库始终充满了必须删除/清除的随机测试数据。另外,我最终在不同的测试运行之间发生PK冲突。
我的applicatonContext内容如下:
...
<!-- Wrap all DAO Implementations in a transaction -->
<aop:config proxy-target-class="false">
<aop:pointcut id="daoOperation" expression="execution(* com.calculator.dao.impl.*Impl.* (..))" />
<aop:advisor pointcut-ref="daoOperation" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="*" read-only="true" propagation="REQUIRED"/>
<tx:method name="execute*" propagation="REQUIRED"/>
<tx:method name="query*" propagation="REQUIRED"/>
<tx:method name="insert" propagation="REQUIRED"/>
<tx:method name="delete" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<bean class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="${datasource.url}" />
<property name="username" value="${datasource.user}" />
<property name="password" value="${datasource.password}" />
<property name="defaultAutoCommit" value="false" />
</bean>
...
如何指定我希望所有JUnit默认回滚?
谢谢,
埃里克
答案 0 :(得分:1)
将此配置放在JUnit测试类上。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/pathTo/spring/context/applicationContext.xml")
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class LocationDaoTest extends AbstractTransactionalJUnit4SpringContextTests{
@Test
public void testDAOsCRUD(){}
}
我希望我已经向你提供了有关你问题的所有答案。