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