私は数時間頭をかきむしっています。
Spring Cloud Netflix は、Eureka クライアントを自動構成します。次のスニペットは、EurekaClientAutoConfiguration のソースからのものです。
@Bean(destroyMethod = "shutdown")
@ConditionalOnMissingBean(value = EurekaClient.class, search = SearchStrategy.CURRENT)
@org.springframework.cloud.context.config.annotation.RefreshScope
@Lazy
public EurekaClient eurekaClient(ApplicationInfoManager applicationInfoManager, EurekaClientConfig config, EurekaInstanceConfig instance) {
applicationInfoManager.getInfo(); // force initialization
return new CloudEurekaClient(applicationInfoManager, config,
this.optionalArgs, this.context);
}
この Bean は、Spring Boot アプリケーションがアプリケーション イベントをトリガーしたときにのみ初期化されます。
JUnit 統合テストを実行していることを考えると、そのようなイベントは発生しません。
ここで単体テスト:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ReferentialClientTest.class)
public class InstrumentClientIT {
@Resource
private InstrumentClient instrumentClient;
@Test
public void testInstrumentClient() {
instrumentClient.findOne(455540l).getName();
}
}
InstrumentClient は、EurekaClient に依存する Feign クライアントです。
これがテスト構成クラスです。
@EnableFeignClients
@EnableDiscoveryClient
@EnableAutoConfiguration
public class ReferentialClientTest {
public static void main(String[] args) {
SpringApplication.run(ReferentialClientTest.class, args);
}
}
EurekaClient を統合テストに接続せずに、EurekaClient が適切に初期化されていることを確認するにはどうすればよいですか? (それは私がまだ見つけた唯一の回避策です)。