gpt4 book ai didi

java - JUnit 测试总是回滚事务

转载 作者:IT老高 更新时间:2023-10-28 13:47:18 24 4
gpt4 key购买 nike

我正在对应用程序 DAO 运行一个简单的 JUnit 测试。问题是我总是得到:

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 支持是否总是将回滚设置为 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
}
}

@见 Spring Reference Chapter 9.3.5.4 Transaction management (或 current version)

关于java - JUnit 测试总是回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com