首页 > 解决方案 > @SpringBootTest 如何预填充嵌入式 MongoDB?

问题描述

基于并尝试使用注释功能编写具有几个端点的微Spring Boot服务MongoDB实现@SpringBootTest

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

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

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

那么您能否建议:在当前的生态系统中,当我们谈论集成(端到端)测试时,为了测试目的Spring Boot而预先填充的正确方法是什么?MongoDB@SpringBootTest

标签: mongodbspring-bootintegration-testingspring-boot-test

解决方案


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

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

推荐阅读