Java spring boot 2.3上的注释@MockBean不工作(未注入?)
由于某些原因,我正在将spring boot版本从2.1.6.RELEASE升级到2.3.0.RELEASE 不幸的是,在这个过程中我遇到了一些问题。。。其中一个在这里。这是关于模拟功能,特别是假装客户端 最奇怪的是,当我使用SpringBoot2.1.6时,一切都很好,模仿也很好。 但升级版本后,我出现了一个错误:Java spring boot 2.3上的注释@MockBean不工作(未注入?),java,spring,spring-boot,mockito,migration,Java,Spring,Spring Boot,Mockito,Migration,由于某些原因,我正在将spring boot版本从2.1.6.RELEASE升级到2.3.0.RELEASE 不幸的是,在这个过程中我遇到了一些问题。。。其中一个在这里。这是关于模拟功能,特别是假装客户端 最奇怪的是,当我使用SpringBoot2.1.6时,一切都很好,模仿也很好。 但升级版本后,我出现了一个错误: java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not hav
java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client
这意味着模拟过程不起作用,因为假客户端实际上试图找到服务器。
我遗漏了什么,有什么需要修改的吗
可以肯定的是,因为我发现spring boot starter测试模块将依赖项mockito版本从2.24.2(不确定)升级到了3.3.2(也不确定),所以我尝试将mockito版本降级到原始版本,但没有显示任何更改。所以我认为问题出在弹簧上
我能做些什么来解决这个问题吗?谢谢
我有以下代码:
Test.java
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Application.class)
@AutoConfigureMockMvc
public class Test{
@MockBean private FeignProxy feignProxy;
@Autowired private ApplicationService applicationService;
@Test
@Transactional
public void doTest(){
when(feignProxy.doProxy()).thenReturn(response);
assertDoesNotThrow(() -> {
applicationService.doService(); // exception occurs
}
}
ApplicationServiceImpl.java
@Component
public class ApplicationServiceImpl implements ApplicationService{
@Autowired private FeignProxy feignProxy;
public void doService(){
...
feignProxy.doProxy();
...
}
}
java具有以下注释:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
...
简而言之:相同的代码,相同的过程,不同的版本,错误。我找到了答案。spring boot和spring cloud之间的版本兼容性不匹配。当我对spring引导使用2.2.5.RELEASE时,错误消失了 此特定问题从2.2.7.RELEASE开始,2.2.6.RELEASE也可以。@vinodchambole您尝试过升级Spring Cloud吗?这对我很有用,谢谢。我会试试的