首页 > 解决方案 > 使用 Testcontainers 和 Liquibase 时在测试之间重置数据库

问题描述

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

标签: spring-bootliquibasetestcontainers

解决方案


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

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

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


推荐阅读