spring - 当事件配置文件为 "test"时使用嵌入式 MongoDB

标签 spring mongodb spring-boot integration-testing

我有

<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。

出于集成测试的目的,如果应用程序以“测试”事件配置文件启动,我还想使用嵌入式 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 配置文件中。

关于spring - 当事件配置文件为 "test"时使用嵌入式 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45032261/

相关文章:

java - "update classpath"在Java或SpringBoot中是什么意思?

尝试显示 .jsp 时出现 Spring MVC tomcat 常量 404 错误

java - Spring @Transaction 未启动事务

spring - 使用 SpringSocialConfigurer 时如何更改 Social AuthenticationFilter.filter Processes Url?

javascript - 从 Mongoose 获取现有的嵌入文档

node.js - Mongoose - 无法创建带有子模型的模型

spring-boot - 如何在 jhipster 中自定义 AbstractAuditingEntity

java - 从 throwable 获取正文详细信息,并断言抛出异常时返回了确切的消息

spring - 使用 _class 的 MongoDB 类型推断

spring-boot - Spring Boot : Custom Validation in Request Params