Spring 引导 - 使用 @Transactional 进行测试危险吗?

Spring Boot - Testing with @Transactional dangerous?

我正在使用 Hibernate 为我们的 Spring Boot REST API 创建单元测试。我只是想知道我使用@Transactional 时是否有问题。如果我用@Transactional 注释测试,我的看法是否正确,数据将永远不会真正结束在数据库中,并且潜在的错误源将被绕过? 因为某些错误只会发生在提交期间?还是我看错了?

Rollback transaction after @Test - 下面的问题不太符合我的问题。因为我想知道如何触发提交并仍然进行回滚。 EntityManager.flush() 可以做什么。我知道如何在每次测试后重置数据库。

无需承诺。因为 EntityManager.flush() 触发相同的操作。

在测试配置中启用事务管理的情况下,spring 中测试方法执行结束时的提交存在 @Commit,当然 @Rollback 用于回滚结尾。对于手动事务控制,我使用 TestTransaction.start()TestTransaction.end(),特别是对于某些删除和更新方法,以确保并检查操作结果。(TestTransaction 需要 @Commit 方法上的注释或手动设置 TestTransaction.flagForCommit())