一尘不染

JUnit测试始终回滚事务

spring

我正在运行一个简单的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?


阅读 852

收藏
2020-04-20

共1个答案

一尘不染

它应该可以正常工作,就像你期望的那样,但是可能是你在被测类中打开了另一个事务,或者某个地方有其他功能/或错误。

顺便说一句,这个注释应该是足够的:

@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
    }
}
2020-04-20