我正在运行一个简单的JUnit测试,又是一个应用程序DAO。问题是我总是得到:
javax.persistence.RollbackException: Transaction marked as rollbackOnly
JUnit测试是:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:com/my/app/context.xml"} @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false) @Transactional public class PerformanceTest { @Test @Transactional(propagation= Propagation.REQUIRES_NEW) @Rollback(false) public void testMsisdnCreationPerformance() { // Create a JPA entity // Persist JPA entity } }
如你所见,我明确声明不回滚此方法。
Spring JUnit支持是否总是将rollback设置为true?
它应该可以正常工作,就像你期望的那样,但是可能是你在被测类中打开了另一个事务,或者某个地方有其他功能/或错误。
顺便说一句,这个注释应该是足够的:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:com/my/app/context.xml"} @Transactional public class PerformanceTest { @Test @Rollback(false) public void testMsisdnCreationPerformance() { // Create a JPA entity // Persist JPA entity } }