【发布时间】:2020-03-29 11:23:15
【问题描述】:
我是#spring 新手,在运行一些测试时遇到了一些问题。我有一些带有以下代码的测试类,它们应该回滚我的(在内存 h2 中)数据库:
@Autowired
PlatformTransactionManager txm;
TransactionStatus txstatus;
@BeforeEach
public void setupDB() {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
txstatus = txm.getTransaction(def);
assumeTrue(txstatus.isNewTransaction());
txstatus.setRollbackOnly();
}
@AfterEach
public void rollback() {
txm.rollback(txstatus);
}
我的问题是,如果一个测试类已经完成,我会得到一个 JdbcSQLIntegrityConstraintViolationException(唯一索引或主键冲突:..),因为我的数据库没有相应地回滚并且再次执行插入语句,因为数据库没有得到清除。有没有人有提示如何解决这个问题?有没有办法回滚插入或在插入完成后不做插入?
【问题讨论】:
标签: java spring spring-boot junit