在"test"活动配置文件时使用嵌入式MongoDB



我有

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

在我的pom中.xml所以我的Spring Boot应用程序在应用程序启动时尝试连接到本地主机上的MongoDB。

我也有

<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<scope>test</scope>
</dependency>

所以当我运行单元测试时,使用了嵌入式 MongoDb。

出于集成测试的目的,如果应用程序是使用"test"活动配置文件启动的,我也想使用嵌入式MongoDB。

如此有效地,我想从嵌入依赖项中删除<scope>test</scope>,并在活动配置文件为"测试"时使用嵌入版本。

我怎样才能做到这一点?

您正在寻找的解决方案很可能是添加嵌入式 mongo 数据库的剖析排除项。请尝试按照以下步骤操作:

  1. 假设默认配置文件用于开发目的,因此您希望在其中运行嵌入式 mongo。EmbeddedMongoAutoConfiguration 是负责配置嵌入式 mongo 数据库的类。当嵌入式 mongo 类位于类路径上时,它会运行,因此只需删除您指出的测试范围
  2. 为生产,docker或任何适合您的配置文件创建一个配置文件,并在此配置文件中确保在yml(或属性文件(中添加以下条目:

    spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration

  3. 请记住,嵌入式 mongo 现在在您的类路径上,这对于生产环境可能不需要,因此您可能还希望配置 maven 以在某些 maven 配置文件中排除它。

使用弹簧轮廓
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-set-active-spring-profiles

@ActiveProfiles("test")

最新更新