protected String[] getInlinedProperties(MergedContextConfiguration config) { ArrayList<String> properties = new ArrayList<>(); // JMX bean names will clash if the same bean is used in multiple contexts disableJmx(properties); properties.addAll(Arrays.asList(config.getPropertySourceProperties())); if (!isEmbeddedWebEnvironment(config) && !hasCustomServerPort(properties)) { properties.add("server.port=-1"); } return StringUtils.toStringArray(properties); }
+ "Spring 4.0.3 or better (found " + SpringVersion.getVersion() + ")."); SpringApplication application = getSpringApplication(); application.setMainApplicationClass(config.getTestClass()); application.addPrimarySources(Arrays.asList(configClasses)); application.getSources().addAll(Arrays.asList(configLocations)); ConfigurableEnvironment environment = getEnvironment(); if (!ObjectUtils.isEmpty(config.getActiveProfiles())) { setActiveProfiles(environment, config.getActiveProfiles()); resourceLoader, config.getPropertySourceLocations()); TestPropertySourceUtils.addInlinedPropertiesToEnvironment(environment, getInlinedProperties(config)); application.setEnvironment(environment); List<ApplicationContextInitializer<?>> initializers = getInitializers(config, application); if (config instanceof WebMergedContextConfiguration) { application.setWebApplicationType(WebApplicationType.SERVLET); if (!isEmbeddedWebEnvironment(config)) { new WebConfigurer().configure(config, application, initializers); if (!isEmbeddedWebEnvironment(config)) { new ReactiveWebConfigurer().configure(application);
SpringBootContextLoader loader = new SpringBootContextLoader(); return (ConfigurableApplicationContext) loader.loadContext(configuration);
@Override public void processContextConfiguration( ContextConfigurationAttributes configAttributes) { super.processContextConfiguration(configAttributes); if (!configAttributes.hasResources()) { Class<?>[] defaultConfigClasses = detectDefaultConfigurationClasses( configAttributes.getDeclaringClass()); configAttributes.setClasses(defaultConfigClasses); } }
private boolean hasCustomServerPort(List<String> properties) { Binder binder = new Binder(convertToConfigurationPropertySource(properties)); return binder.bind("server.port", Bindable.of(String.class)).isBound(); }