package org.springframework.cloud.client.discovery; import org.junit.Test; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.core.NestedRuntimeException; import static org.junit.Assert.assertTrue; /** * Tests that if <code>@EnableDiscoveryClient</code> is used, but there is no * implementation on the classpath, then fail * @author Spencer Gibb */ public class EnableDiscoveryClientMissingImplTests { @Test public void testContextFails() { try (ConfigurableApplicationContext context = new SpringApplicationBuilder() .sources(App.class).web(false).run(new String[0]);) { } catch (NestedRuntimeException e) { Throwable rootCause = e.getRootCause(); assertTrue(rootCause instanceof IllegalStateException); assertTrue(rootCause.getMessage().contains("no implementations")); } } @EnableAutoConfiguration @Configuration @EnableDiscoveryClient // this will fail with @EnableDiscoveryClient and no implementation (nothing in // spring.factories) public static class App { } }