繁体   English   中英

Spring 集成测试中的事务管理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM