database - 在不使用 DirtiesContext 的情况下在 Spring 的每次测试后重置数据库

标签 database spring integration-testing

我想知道是否有什么方法可以在每次集成测试后重置数据库没有 @DirtiesContext:

@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

This works但它是 非常慢,因为每次测试都会重新加载 Spring 上下文。

我的测试正在使用 MockMvc ,对 API 进行休息调用。喜欢:
mockMvc.perform(put("/products/)
            .header("Content-Type", "application/json")
            .content(jsonPost))
            .andExpect(status().isOk())
            .andReturn();

因此,无需人工干预(创建和维护脚本以删除和创建表),Spring 框架提供了一些替代方案吗?

最佳答案

在简单的情况下,将每个测试类注释为 @Transactional并且事务管理器会在每个 @Test 之后做回滚方法。获取更多信息 reading this .

关于database - 在不使用 DirtiesContext 的情况下在 Spring 的每次测试后重置数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48714118/

相关文章:

MySQL 在安全更新模式下使用子查询进行更新

c# - EF 核心实体数据访问中的强制转换无效

c# - 如何防止对文本框的SQL注入(inject)攻击?

运行所有集成测试时,grailsApplication 在域类中不可用

php - codeigniter 中的双数据库

Java/Spring - 保护参数(路径变量)

mysql - Spring Transactions with Hibernate 和 SQL 最佳实践

java - 配置的 JUnit 测试用例

java - Maven Cargo 不会停止容器

nunit - 如何让 NUnit 在第一次失败时停止执行测试