我有一个 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/