数据库中的回滚更改,而不使用@transactional进行弹簧测试

时间:2018-04-26 19:58:39

标签: hibernate jpa rollback

我正在创建一个需要在数据库中保存数据的测试,所以我不能使用@Transactional,因为我需要将数据有效保存在数据库中,问题是没有用@transaction是提交后可能回滚事务吗?

1 个答案:

答案 0 :(得分:0)

在每次测试之前,您的数据库应处于已知状态,并且任何一项测试都不应取决于另一项测试的结果。如果您需要提交其他原因,例如对测试进行故障排除,那么您可以使用以下方法注释测试类或单个测试方法:

@Rollback(false)@Commit

https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#rollback

https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#commit

  

@Rollback表示事务是否为事务测试   测试方法完成后,应该回滚方法。如果   是的,交易被回滚;否则,交易是   承诺(另见@Commit)。用于集成测试的回滚语义   在Spring TestContext Framework中默认为true,即使@Rollback   未明确声明。