【问题标题】:Reset database between tests when using Testcontainers and Liquibase使用 Testcontainers 和 Liquibase 时在测试之间重置数据库
【发布时间】:2021-06-17 07:12:53
【问题描述】:

如果我在集成测试中使用单例数据库容器,如何在每次测试之前确保数据库处于干净状态(无数据)?代码库使用 Liquibase 进行数据迁移。

【问题讨论】:

    标签: spring-boot liquibase testcontainers


    【解决方案1】:

    如果您想在每次测试之后/之前删除数据库中的所有行,您可以:

    1. 使用@Transactional 进行测试,Spring 将在每次测试后回滚事务
    2. 使用JdbcTemplate/YourEntityRepository(Spring Data JPA 存储库)并使用DELETE SQL 查询(JdbcTemplate)或.deleteAll()(Spring Data JPA 存储库)将其删除,作为 JUnit Jupiters 的一部分 @987654327 @/@AfterEach

    您从 Liquibase 应用的 DDL 脚本 (CREATE) 将保留,并且每个测试都以有效架构开始。

    【讨论】:

    • 我选择了选项 2,因为 Hibernate(这是我们正在使用的 JPA 实现)会在某些表存在关系的情况下正确清理表。
    • 选项 1) 确实对我有用。
    猜你喜欢
    • 2019-09-06
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2021-02-10
    • 2021-10-25
    • 2021-10-24
    • 1970-01-01
    • 2019-07-17
    相关资源
    最近更新 更多