我正在对应用程序 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?
原文由 Juan 发布,翻译遵循 CC BY-SA 4.0 许可协议
它应该像您期望的那样工作,但可能是您在被测类中打开了另一个事务,或者您在某处有其他功能/或错误。
顺便说一句,这个注释应该足够了:
@See Spring Reference Chapter 9.3.5.4 Transaction management (or current version )