1. @AutoConfigureTestDatabase/@AutoConfigureTestEntityManager
@AutoConfigureTestDatabase 与 @AutoConfigureTestEntityManager 注解在 Spring Boot 测试中各有什么作用?
- @AutoConfigureTestDatabase 替换数据源
- @AutoConfigureTestEntityManager 提供 JPA TestEntityManager
- 切片测试中的应用
@AutoConfigureTestDatabase 用于配置测试时替换应用的数据源,默认用嵌入式数据库(如 H2)替换真实数据源,支持 replace = Replace.ANY(替换所有数据源)或 Replace.NONE(不替换)。它让 JPA 切片测试无需真实数据库即可运行。@AutoConfigureTestEntityManager 提供测试用的 TestEntityManager(Spring Boot 封装的 EntityManager 测试辅助类),用于 @DataJpaTest 等切片测试中注入 TestEntityManager 并执行查询,避免直接管理真实数据库连接。两者常配合 @DataJpaTest 使用,保证测试隔离且快速。
这两个注解让 JPA 测试脱离真实数据库,提升测试速度与隔离性。理解 replace 语义与配合方式,是写好切片测试的基础。