【发布时间】:2020-09-11 05:37:06
【问题描述】:
我有一个复杂的服务方法,它从数据库加载大量数据。因为它只读取和验证数据,所以我想确保
- JPA (Hibernate) 不会浪费时间检查大持久性 变化的背景。
- 不会写入数据的意外更改 到数据库。
因此,在我的服务即将结束时,我有此代码
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()
我的单元测试对所有数据库访问都进行了模拟,因此事务处理不是问题。 (我有 @SpringBootTest 的集成测试和完整的 trx 支持。)不幸的是,回滚语句在纯单元测试中失败。
有没有一种简单的方法可以让回滚语句在单元测试的情况下什么也不做?
【问题讨论】:
-
你有休眠的自动提交,你调用的方法的传播级别是多少?
-
这是一个纯单元测试。没有数据库,休眠,事务。我只想测试服务的内部逻辑。一切都回滚的事实只是一种安全/性能措施。
标签: java spring spring-boot transactions spring-transactions