You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot测试中如何连接嵌入式MongoDB?

解决嵌入式MongoDB测试连接问题

1. 限制生产Mongo配置的生效环境

如果你的生产Mongo配置类(带@Configuration注解)未指定生效范围,测试时会被加载并连接生产库。给生产配置添加@Profile("!test"),让它在测试环境中自动失效:

@Configuration
@Profile("!test")
public class ProductionMongoConfig {
    // 生产环境Mongo配置代码
}

2. 配置测试环境专属配置文件

在src/test/resources下创建application-test.properties,明确指定嵌入式MongoDB的连接参数,覆盖生产配置:

# 嵌入式MongoDB默认端口为27017,可自定义端口
spring.data.mongodb.uri=mongodb://localhost:27017/test_embedded_db
# 也可拆分配置
# spring.data.mongodb.host=localhost
# spring.data.mongodb.port=27017
# spring.data.mongodb.database=test_embedded_db

3. 给测试类指定激活测试环境

在测试类上添加@ActiveProfiles("test"),确保加载测试专属配置文件:

@DataMongoTest
@ActiveProfiles("test")
public class MongoDbSpringIntegrationTest {
    // 原有测试代码保持不变
}

4. 排除冲突的自动配置类

若上述步骤仍无效,可在@DataMongoTest中排除可能加载生产Mongo连接的自动配置类:

@DataMongoTest(excludeAutoConfiguration = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
@ActiveProfiles("test")
public class MongoDbSpringIntegrationTest {
    // 原有测试代码保持不变
}

5. 确认依赖配置正确性

再次检查de.flapdoodle.embed.mongo依赖的scope是否为test,确保仅在测试环境生效,不干扰生产:

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

内容的提问来源于stack exchange,提问作者K.Ozbek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:30:01