@SpringBootTest 如何预填充嵌入式MongoDB?

@SpringBootTest how to pre-populate embedded MongoDB?

基于 Spring BootMongoDB 使用几个端点实现微服务,并尝试使用 @SpringBootTest 注释功能编写集成测试。

目前,我面临一个问题,我需要使用一些测试数据预填充仅在 'test' 短语期间实例化的嵌入式 MongoDB 实例。

而且我没有在 Spring Boot 中找到任何用于此目的的开箱即用选项。

有些人建议使用像 mongobee or mongoprefill or nosql-unit 这样的测试数据预填充工具,但对我来说,这似乎是开销或解决方法,即使在测试范围内也不想引入任何新的依赖项。

所以请您指教:在当前的 Spring Boot 生态系统中,当我们谈论集成(端到-结束)使用 @SpringBootTest?

进行测试

有多种方法可以预填充数据:

  1. 使用@BeforeEach@BeforeAll等JUnit生命周期方法来填充数据
  2. 您可以禁用 Spring 嵌入式 MongoDB 的引导自动配置并自行执行并在创建连接后插入数据
  3. 您可以以某种方式反映我们用于测试关系数据库的 @Sql 功能,并使用 AsbtractTestExectuionListener 编写类似的东西。为此,请查看 Spring class SqlScriptsTestExecutionListener
  4. 提供一个实现 CommandLineRunner 接口的 class,并且仅使用 @Profile("integration-test")
  5. 为您的集成测试配置文件激活此 bean