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()
)
我正在使用 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()
)