Spring-Boot-Test @MockBeans是否有资格获得@ConditionalOnBean条件?

时间:2017-07-10 18:24:41

标签: java spring spring-boot spring-boot-starter

我有一个java @Configuration类,FOO @Bean注明了@ConditionalOnBean(BAR.class).正如我希望这个bean由或不是由进口商项目提供,它在任何地方都不存在在我的项目中。

在我的集成测试中,我通过Bar.class模拟@MockBeans。但由于某些原因,Spring-Boot -debug告诉我它没有找到它所以我的条件bean没有被加载。

我几乎可以肯定这种情况在过去是否正常,但我是否配置了额外的东西?我无法使其成功

P.S>我发现在相同的@Configuration中手动重新注册@Bean,因为条件没有看到它!有没有与他有关的已知错误?

Autoreply:这种情况的罪魁祸首是

  

您需要非常小心bean定义的顺序   添加,因为这些条件是基于已经的评估   到目前为止处理。因此,我们建议仅使用   @ConditionalOnBean和@ConditionalOnMissingBean注释   自动配置类(因为这些类保证在之后加载   已添加任何用户定义的bean定义。)

P.S2>我意识到Bar.class是一个界面,但我不知道为什么只要实现存在就不应该工作

P.S3>我发现MockitoTestExecutionListener是在OnBeanCondition类之后执行的。这似乎完全是我的问题。