Polish test property source changes made in 69b08291

TestPropertySourcesInitializer needs to be ordered with a high
precedence, specifically higher than
ContextIdApplicationContextInitializer, to ensure that any properties
used in setting the context’s id are available in the environment.

Closes gh-4828
This commit is contained in:
Andy Wilkinson 2016-04-07 11:34:09 +01:00
parent 9b121dcbaa
commit a37ae5d556
2 changed files with 13 additions and 6 deletions

View File

@ -31,6 +31,7 @@ import org.springframework.boot.test.util.EnvironmentTestUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.Ordered;
import org.springframework.core.SpringVersion;
import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.core.env.ConfigurableEnvironment;
@ -245,8 +246,9 @@ public class SpringBootContextLoader extends AbstractContextLoader {
/**
* {@link ApplicationContextInitializer} to set up test property sources.
*/
private static class TestPropertySourcesInitializer
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
private static class TestPropertySourcesInitializer implements
ApplicationContextInitializer<ConfigurableApplicationContext>, Ordered {
private final String[] propertySourceLocations;
@ -266,6 +268,11 @@ public class SpringBootContextLoader extends AbstractContextLoader {
this.inlinedProperties);
}
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE + 10;
}
}
/**

View File

@ -55,8 +55,8 @@ public class SpringApplicationIntegrationTestPropertyLocationTests {
public void loadedProperties() throws Exception {
assertThat(this.environment.getProperty("value1")).isEqualTo("123");
assertThat(this.environment.getProperty("value2")).isEqualTo("456");
assertThat(this.environment.getProperty("annotation-referenced"))
.isEqualTo("fromfile");
assertThat(this.environment.getProperty("property-source-location"))
.isEqualTo("baz");
}
@Configuration
@ -68,14 +68,14 @@ public class SpringApplicationIntegrationTestPropertyLocationTests {
@Value("${value2}")
private String value2;
@Value("${annotation-referenced}")
@Value("${property-source-location}")
private String annotationReferenced;
@PostConstruct
void checkValues() {
assertThat(this.value1).isEqualTo("123");
assertThat(this.value2).isEqualTo("456");
assertThat(this.annotationReferenced).isEqualTo("fromfile");
assertThat(this.annotationReferenced).isEqualTo("baz");
}
}