@ -22,6 +22,8 @@ import org.junit.Ignore;
import org.junit.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
* /
public class SpringBootContextLoaderTests {
@ -88,13 +91,40 @@ public 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 @@ public 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
static class Config {