@EnableAutoConfiguration(排除=.)关于Spring Boot 2.6.0中测试失败的问题 [英] @EnableAutoConfiguration(exclude =...) on tests failed in Spring Boot 2.6.0
本文介绍了@EnableAutoConfiguration(排除=.)关于Spring Boot 2.6.0中测试失败的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图将我的data-mongo示例项目升级到Spring Boot2.6.0。有一个测试旨在针对Testtainers运行,我还为其他测试包括了嵌入式mongo dep,因此我必须排除嵌入式mongo的自动配置,以确保此测试在docker/testtainers上运行。
以下配置在Spring Boot 2.5.6中运行良好。
@DataMongoTest
@ContextConfiguration(initializers = {MongodbContainerInitializer.class})
@EnableAutoConfiguration(exclude = EmbeddedMongoAutoConfiguration.class)
@Slf4j
@ActiveProfiles("test")
public class PostRepositoryTest {}
但是在升级到Spring Boot 2.6.0并运行应用程序后,我得到了如下异常。
[ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: o
rg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'embeddedMongoServer' defined in class path resource [org/springframework/boot/autoconfig
ure/mongo/embedded/EmbeddedMongoAutoConfiguration.class]: Unsatisfied dependency expressed through method 'embeddedMongoServer' parameter 0; nested exception is org.springframework.bea
ns.factory.BeanCreationException: Error creating bean with name 'embeddedMongoConfiguration' defined in class path resource [org/springframework/boot/autoconfigure/mongo/embedded/Embed
dedMongoAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [de.flap
doodle.embed.mongo.config.MongodConfig]: Factory method 'embeddedMongoConfiguration' threw exception; nested exception is java.lang.IllegalStateException: Set the spring.mongodb.embedd
ed.version property or define your own MongodConfig bean to use embedded MongoDB
显然,@EnableAutoConfiguration(exclude =...)
在升级到Spring Boot 2.6.0时不会影响测试中的上下文。
更新:暂时解决了该问题,请参阅下面的答案。
推荐答案
在测试类上使用@ImportAutoConfiguration(exclude = ...)
或@DataMongoTest(excludeAutoConfiguration = ...)
在升级到Spring Boot 2.6.0时克服此屏障。
@DataMongoTest
@ImportAutoConfiguration(exclude = EmbeddedMongoAutoConfiguration.class)
//other config are ommitted
public class PostRepositoryTest {}
//or
@DataMongoTest(excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class)
public class PostRepositoryTest {}
这篇关于@EnableAutoConfiguration(排除=.)关于Spring Boot 2.6.0中测试失败的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文