Я использую Spring Boot 2.0 с файлом свойств по умолчанию application.yml
. Я хотел бы разделить его на отдельные файлы свойств, потому что он становится огромным.
Также я хотел бы написать тесты для проверки правильности свойств: значений, которые будут представлены в контексте производственного приложения (не тестового).
Вот мой файл свойств: src/main/resources/config/custom.yml
my-property:
value: 'test'
Класс недвижимости:
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Data
@Configuration
@ConfigurationProperties(prefix = "my-property")
@PropertySource("classpath:config/custom.yml")
public class MyProperty {
private String value;
}
Контрольная работа:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyProperty.class)
@EnableConfigurationProperties
public class MyPropertyTest {
@Autowired
private MyProperty property;
@Test
public void test() {
assertEquals("test", property.getValue());
}
}
Но тест не проходит с ошибкой:
java.lang.AssertionError:
Expected :test
Actual :null
Также я вижу, что значение свойства равно null
при запуске приложения, печатая его в ApplicationRunner
.
Когда я использовал application.yml
для всех свойств, это было хорошо с той же конфигурацией.
Как правильно настроить свойства и тесты, чтобы заставить их работать?
Ссылка на Github репозиторий
@TestPropertySource
для указания местоположения ваших файлов конфигурации? - person Prashant   schedule 04.06.2018