@SpringBootTest 如何预填充嵌入式MongoDB?
@SpringBootTest how to pre-populate embedded MongoDB?
基于 Spring Boot
和 MongoDB
使用几个端点实现微服务,并尝试使用 @SpringBootTest
注释功能编写集成测试。
目前,我面临一个问题,我需要使用一些测试数据预填充仅在 'test' 短语期间实例化的嵌入式 MongoDB
实例。
而且我没有在 Spring Boot
中找到任何用于此目的的开箱即用选项。
有些人建议使用像 mongobee or mongoprefill or nosql-unit 这样的测试数据预填充工具,但对我来说,这似乎是开销或解决方法,即使在测试范围内也不想引入任何新的依赖项。
所以请您指教:在当前的 Spring Boot
生态系统中,当我们谈论集成(端到-结束)使用 @SpringBootTest
?
进行测试
有多种方法可以预填充数据:
- 使用
@BeforeEach
、@BeforeAll
等JUnit生命周期方法来填充数据
- 您可以禁用 Spring 嵌入式 MongoDB 的引导自动配置并自行执行并在创建连接后插入数据
- 您可以以某种方式反映我们用于测试关系数据库的
@Sql
功能,并使用 AsbtractTestExectuionListener
编写类似的东西。为此,请查看 Spring class SqlScriptsTestExecutionListener
- 提供一个实现
CommandLineRunner
接口的 class,并且仅使用 @Profile("integration-test")
为您的集成测试配置文件激活此 bean
基于 Spring Boot
和 MongoDB
使用几个端点实现微服务,并尝试使用 @SpringBootTest
注释功能编写集成测试。
目前,我面临一个问题,我需要使用一些测试数据预填充仅在 'test' 短语期间实例化的嵌入式 MongoDB
实例。
而且我没有在 Spring Boot
中找到任何用于此目的的开箱即用选项。
有些人建议使用像 mongobee or mongoprefill or nosql-unit 这样的测试数据预填充工具,但对我来说,这似乎是开销或解决方法,即使在测试范围内也不想引入任何新的依赖项。
所以请您指教:在当前的 Spring Boot
生态系统中,当我们谈论集成(端到-结束)使用 @SpringBootTest
?
有多种方法可以预填充数据:
- 使用
@BeforeEach
、@BeforeAll
等JUnit生命周期方法来填充数据 - 您可以禁用 Spring 嵌入式 MongoDB 的引导自动配置并自行执行并在创建连接后插入数据
- 您可以以某种方式反映我们用于测试关系数据库的
@Sql
功能,并使用AsbtractTestExectuionListener
编写类似的东西。为此,请查看 Spring classSqlScriptsTestExecutionListener
- 提供一个实现
CommandLineRunner
接口的 class,并且仅使用@Profile("integration-test")
为您的集成测试配置文件激活此 bean