commit
						67fab60fbd
					
				|  | @ -29,7 +29,6 @@ import org.springframework.boot.context.properties.source.ConfigurationPropertyS | |||
| import org.springframework.boot.context.properties.source.MapConfigurationPropertySource; | ||||
| import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; | ||||
| import org.springframework.boot.test.mock.web.SpringBootMockServletContext; | ||||
| import org.springframework.boot.test.util.TestPropertyValues; | ||||
| import org.springframework.boot.web.reactive.context.GenericReactiveWebApplicationContext; | ||||
| import org.springframework.boot.web.servlet.support.ServletContextApplicationContextInitializer; | ||||
| import org.springframework.context.ApplicationContext; | ||||
|  | @ -76,6 +75,7 @@ import org.springframework.web.context.support.GenericWebApplicationContext; | |||
|  * @author Andy Wilkinson | ||||
|  * @author Stephane Nicoll | ||||
|  * @author Madhura Bhave | ||||
|  * @author Scott Frederick | ||||
|  * @since 1.4.0 | ||||
|  * @see SpringBootTest | ||||
|  */ | ||||
|  | @ -97,7 +97,7 @@ public class SpringBootContextLoader extends AbstractContextLoader { | |||
| 		application.getSources().addAll(Arrays.asList(configLocations)); | ||||
| 		ConfigurableEnvironment environment = getEnvironment(); | ||||
| 		if (!ObjectUtils.isEmpty(config.getActiveProfiles())) { | ||||
| 			setActiveProfiles(environment, config.getActiveProfiles()); | ||||
| 			environment.setActiveProfiles(config.getActiveProfiles()); | ||||
| 		} | ||||
| 		ResourceLoader resourceLoader = (application.getResourceLoader() != null) ? application.getResourceLoader() | ||||
| 				: new DefaultResourceLoader(getClass().getClassLoader()); | ||||
|  | @ -155,11 +155,6 @@ public class SpringBootContextLoader extends AbstractContextLoader { | |||
| 				.getValue("args", String[].class).orElse(NO_ARGS); | ||||
| 	} | ||||
| 
 | ||||
| 	private void setActiveProfiles(ConfigurableEnvironment environment, String[] profiles) { | ||||
| 		TestPropertyValues.of("spring.profiles.active=" + StringUtils.arrayToCommaDelimitedString(profiles)) | ||||
| 				.applyTo(environment); | ||||
| 	} | ||||
| 
 | ||||
| 	protected String[] getInlinedProperties(MergedContextConfiguration config) { | ||||
| 		ArrayList<String> properties = new ArrayList<>(); | ||||
| 		// JMX bean names will clash if the same bean is used in multiple contexts | ||||
|  |  | |||
|  | @ -22,6 +22,8 @@ import org.junit.jupiter.api.Disabled; | |||
| import org.junit.jupiter.api.Test; | ||||
| 
 | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.core.env.Environment; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.ContextConfiguration; | ||||
| import org.springframework.test.context.MergedContextConfiguration; | ||||
| import org.springframework.test.context.TestContext; | ||||
|  | @ -35,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat; | |||
|  * Tests for {@link SpringBootContextLoader} | ||||
|  * | ||||
|  * @author Stephane Nicoll | ||||
|  * @author Scott Frederick | ||||
|  */ | ||||
| class SpringBootContextLoaderTests { | ||||
| 
 | ||||
|  | @ -88,13 +91,40 @@ class SpringBootContextLoaderTests { | |||
| 		assertKey(config, "variables", "foo=FOO\n bar=BAR"); | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void noActiveProfiles() { | ||||
| 		Environment environment = getApplicationEnvironment(SimpleConfig.class); | ||||
| 		assertThat(environment.getActiveProfiles()).isEmpty(); | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void multipleActiveProfiles() { | ||||
| 		Environment environment = getApplicationEnvironment(MultipleActiveProfiles.class); | ||||
| 		assertThat(environment.getActiveProfiles()).containsExactly("profile1", "profile2"); | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void activeProfileWithComma() { | ||||
| 		Environment environment = getApplicationEnvironment(ActiveProfileWithComma.class); | ||||
| 		assertThat(environment.getActiveProfiles()).containsExactly("profile1,2"); | ||||
| 	} | ||||
| 
 | ||||
| 	private Map<String, Object> getEnvironmentProperties(Class<?> testClass) { | ||||
| 		TestContext context = new ExposedTestContextManager(testClass).getExposedTestContext(); | ||||
| 		TestContext context = getTestContext(testClass); | ||||
| 		MergedContextConfiguration config = (MergedContextConfiguration) ReflectionTestUtils.getField(context, | ||||
| 				"mergedContextConfiguration"); | ||||
| 		return TestPropertySourceUtils.convertInlinedPropertiesToMap(config.getPropertySourceProperties()); | ||||
| 	} | ||||
| 
 | ||||
| 	private Environment getApplicationEnvironment(Class<?> testClass) { | ||||
| 		TestContext context = getTestContext(testClass); | ||||
| 		return context.getApplicationContext().getEnvironment(); | ||||
| 	} | ||||
| 
 | ||||
| 	private TestContext getTestContext(Class<?> testClass) { | ||||
| 		return new ExposedTestContextManager(testClass).getExposedTestContext(); | ||||
| 	} | ||||
| 
 | ||||
| 	private void assertKey(Map<String, Object> actual, String key, Object value) { | ||||
| 		assertThat(actual.containsKey(key)).as("Key '" + key + "' not found").isTrue(); | ||||
| 		assertThat(actual.get(key)).isEqualTo(value); | ||||
|  | @ -142,6 +172,20 @@ class SpringBootContextLoaderTests { | |||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	@SpringBootTest | ||||
| 	@ActiveProfiles({ "profile1", "profile2" }) | ||||
| 	@ContextConfiguration(classes = Config.class) | ||||
| 	static class MultipleActiveProfiles { | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	@SpringBootTest | ||||
| 	@ActiveProfiles({ "profile1,2" }) | ||||
| 	@ContextConfiguration(classes = Config.class) | ||||
| 	static class ActiveProfileWithComma { | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	@Configuration(proxyBeanMethods = false) | ||||
| 	static class Config { | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue