添加OpenFeign依赖后Spring Cloud Contract测试失败如何解决?
问题原因
这个报错并非OpenFeign与Spring Cloud Contract的直接冲突,核心原因是:Spring Cloud Contract Stub Runner的自动配置会尝试创建StubRunnerReactiveDiscoveryClient Bean,但你的项目基于Servlet(非Reactive)技术栈,缺少Reactor核心依赖(reactor-core),导致找不到Flux类。
解决方案
以下三种方案任选其一即可解决问题:
方案1:排除Reactive相关自动配置
在测试类或配置中,排除Stub Runner的Reactive自动配置类,避免触发相关Bean的创建:
方式A:在测试类上添加注解
@SpringBootTest @EnableAutoConfiguration(exclude = StubRunnerReactiveDiscoveryClientAutoConfiguration.class) public class YourContractTestClass { // 测试代码逻辑 }
方式B:在测试环境配置文件中添加排除(推荐)
在src/test/resources/application-test.yml中添加:
spring: autoconfigure: exclude: org.springframework.cloud.contract.stubrunner.spring.cloud.StubRunnerReactiveDiscoveryClientAutoConfiguration
方案2:引入Reactor依赖(适合允许添加Reactive栈的项目)
如果项目不排斥引入Reactive相关依赖,可以直接添加spring-boot-starter-webflux(仅在测试环境引入即可):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> <scope>test</scope> </dependency>
方案3:禁用Stub Runner的Reactive功能
通过配置属性关闭Stub Runner的Reactive发现客户端支持:
在src/test/resources/application-test.yml中添加:
stubrunner: reactive: enabled: false
补充说明
Spring Cloud Contract与OpenFeign本身不存在已知的兼容性冲突,这个问题属于Stub Runner自动配置在非Reactive项目中的适配问题,通过上述配置调整即可让两者正常协同工作。
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

