spring-boot - 使用 Testcontainers 和 Liquibase 时在测试之间重置数据库
问题描述
如果我在集成测试中使用单例数据库容器,如何在每次测试之前确保数据库处于干净状态(无数据)?代码库使用 Liquibase 进行数据迁移。
解决方案
如果您想在每次测试之后/之前删除数据库中的所有行,您可以:
- 用于
@Transactional
您的测试,Spring 将在每次测试后回滚事务 - 使用
JdbcTemplate
/YourEntityRepository
(Spring Data JPA Repositories) 并使用DELETE
SQL 查询 (JdbcTemplate
) 或.deleteAll()
(Spring Data JPA repositories) 作为 JUnit Jupiters 的一部分删除它们@BeforeEach
/@AfterEach
您从 Liquibase 应用的 DDL 脚本 ( CREATE
) 将保留,并且每个测试都以有效的模式开始。
推荐阅读
- javascript - 根据数组值angularjs分配ng-class值
- sharepoint - Jira:我想与 Service Now 和 Share Point 集成
- html - 无法将新数据集分配给 ng4 图表
- c++ - 通过 CMAKE 将配置文件作为静态库的一部分
- c# - 如何在winforms的实时图表中自定义图例?
- kubernetes - Ubuntu上的kubernetes:通过consul与其他主机交互的微服务问题
- java - 如何在 gradle 文件中的一个任务中执行多个 shell 脚本
- java - 将 hashmap 作为值添加到 hashmap
- google-docs - Google 文档或其他插件中的插件,用于在 App Maker 中提供功能
- php - 使用 create_shared_link_with_settings 的路径问题