java - Spring 启动1.5.4 : exclude configuration class in unit test

标签 java unit-testing spring-boot spring-data-mongodb spring-test

我有一个 Spring Boot 项目,版本 1.5.4,带有 MongoDb 配置类:

@Configuration
public class MongoConfig {

@Value("${spring.data.mongo.client.uri:mongodb://localhost:27017/database}")
private String mongoURI;

@Bean
public MongoDbFactory mongoFactory() throws UnknownHostException{
    return new SimpleMongoDbFactory(new MongoClientURI(mongoURI));
}

@Bean
public MongoTemplate mongoTemplate() throws UnknownHostException, MongoException{
    return new MongoTemplate(mongoFactory());
}
}

在我的集成测试中,我想使用嵌入式 Mongo (https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo)。

问题是MongoDb配置类在Embedded mongo初始化之前启动并尝试连接数据库,所以我的测试失败。如果我删除 MongoConfig 类,所有测试都会正常工作。

如何仅在测试执行中排除它?

最佳答案

通过在测试类上使用以下注释来排除 MongoDB 自动配置。

@EnableAutoConfiguration(排除={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})

然后在与测试类相同的路径中创建一个配置类并在那里定义您的 mongo bean。这将在应用程序启动期间被拾取

**@Configuration
public class MockConfigurations {
@Bean
@Primary
public MongoTemplate getMongoTemplate() {
//define your bean
return mongoTemplate;
}
}**

关于java - Spring 启动1.5.4 : exclude configuration class in unit test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46661099/

相关文章:

java - 将特定的 INFO 日志行发送到不同的文件

java - 应用程序在 CircleImageView 的 setImageResource 上停止工作

java - 如何到达下一个枢纽

javascript - jQuery : window is not defined 的 Buster.js 依赖性错误

java - Spring Boot JPA 接口(interface) save() 和 delete() 不适用于 ArrayList 或 Long

spring-boot - 如何将预定作业实现为微服务

java - ArrayHeap 类不返回排序数组

javascript - 后端驱动网站的 javascript 单元测试

python - 模拟 Flask before_first_request

spring - Spring Boot与MySQL中的多个架构连接