使用 Testcontainers 和 Liquibase 时在测试之间重置数据库

per*_*son 1 liquibase spring-boot testcontainers

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

rie*_*pil 5

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

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

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

  • 选项 1) 绝对不适合我。 (2认同)
  • 请小心选项 1。它可能会导致假阴性测试结果。 (2认同)