每次在 Spring 上测试后重置数据库而不使用 DirtiesContext

Dhe*_*rik 6 database spring integration-testing

我想知道是否有某种方法可以在每次集成测试后重置数据库而无需@DirtiesContext:

@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
Run Code Online (Sandbox Code Playgroud)

这可行,但速度非常慢,因为每次测试都会重新加载 Spring 上下文。

我的测试使用MockMvc,对 API 进行剩余调用。喜欢:

mockMvc.perform(put("/products/)
            .header("Content-Type", "application/json")
            .content(jsonPost))
            .andExpect(status().isOk())
            .andReturn();
Run Code Online (Sandbox Code Playgroud)

那么,在没有手动干预(创建和维护脚本来删除和创建表)的情况下,Spring 框架提供了一些替代方案吗?

Lev*_*hev 3

在简单的情况下,将每个测试类注释为@Transactional事务管理器将在每个方法之后进行回滚@Test阅读本文获取更多信息。