Configure test property sources before ConfigFileApplicationListener runs
Previously, SpringBootContextLoader configured the environment with the test property sources using an ApplicationContextInitializer. This was because TestPropertySourceUtils did not provide a method to directly configure the environment using properties files, it had to be done via an application context. An unwanted side-effect of this was that the test property sources were not being configured before ConfigFileApplicationListener examined the environment to determine the name and locations of the files that it should be loading. This commit takes advantage of a new method that was added to TestPropertySourceUtils which allows properties files to be added directly to the environment without using an application context. This means that the use of the ApplicationContextInitializer can be removed and the test property sources can be applied to the environment before the application context is created. Closes gh-5728pull/5745/head
parent
0cfcbeb40e
commit
601791c664
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright 2012-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.test.context;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Tests for {@SpringBootTest} with a custom config name
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
*/
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(properties = "spring.config.name=custom-config-name")
|
||||
public class SpringBootTestCustomConfigNameTests {
|
||||
|
||||
@Value("${test.foo}")
|
||||
private String foo;
|
||||
|
||||
@Test
|
||||
public void propertyIsLoadedFromConfigFileWithCustomName() {
|
||||
assertThat(this.foo).isEqualTo("bar");
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class TestConfiguration {
|
||||
|
||||
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
|
||||
return new PropertySourcesPlaceholderConfigurer();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1 @@
|
||||
test.foo=bar
|
Loading…
Reference in New Issue