当活动配置文件为“test”时使用Embedded MongoDB

时间:2017-07-11 10:41:49

标签: spring mongodb spring-boot integration-testing

我有

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

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

我也有

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

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

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

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

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

您可能正在寻找的解决方案是添加配置文件排除嵌入式mongo数据库。尝试执行以下步骤:

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

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

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

答案 1 :(得分:-1)