![](/img/trans.png)
[英]Struts 2 execAndWait + Spring transaction management integration
[英]Spring transaction management in integration tests
目前我正在阅读有关测试的 Spring 框架文档。 而且我无法正确解释以下部分:
默认情况下,框架会为每个测试创建并回滚一个事务。
原文链接: https://docs.spring.io/spring-framework/docs/current/reference/html/testing.html#testing-tx
据我了解,默认情况下,我们不需要使用 @Transactional 注释来注释测试方法或 class 来为该方法创建事务。 但是我在实践中看到的是,如果我跳过使用提到的注释对方法或 class 进行注释 - 将不会创建事务。
@Transactional 注释是为了表明一个事务预计会在方法中发生。 对于跨国用例,这是预期的。
TestContext 框架给我们带来的好处是,当它看到@Transactional 注解时,如果你在测试用例中执行插入查询,那么在测试用例结束后,框架会自动回滚插入查询以将数据库恢复到其旧的 state。 这确保了所有测试用例在运行期间具有相同的 DB 的 state。 否则,如果这没有发生,每个测试用例都会改变 DB 的 state,这可能会导致不需要的结果。
如果不是这种情况,我们/用户必须在每个测试用例之后重新创建数据库。
如果你想在发送 web 请求后回滚,你可以使用 @DirtiesContext 注释来重置你的上下文
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.