Я хочу протестировать небольшие части приложения, которые полагаются на свойства, загруженные с помощью @Autowired
и @ConfigurationProperties
. Я ищу решение, загружающее только требуемые свойства, а не всегда все ApplicationContext
.
Вот как сокращенный пример:
@TestPropertySource(locations = "/SettingsTest.properties")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestSettings.class, TestConfiguration.class})
public class SettingsTest {
@Autowired
TestConfiguration config;
@Test
public void testConfig(){
Assert.assertEquals("TEST_PROPERTY", config.settings().getProperty());
}
}
Класс конфигурации:
public class TestConfiguration {
@Bean
@ConfigurationProperties(prefix = "test")
public TestSettings settings (){
return new TestSettings();
}
}
Класс настроек:
public class TestSettings {
private String property;
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
}
Файл свойств в папке ресурсов содержит запись:
test.property=TEST_PROPERTY
В моей текущей конфигурации config не является нулевым, но поля не доступны. Причина, по которой поля не являются полями, должна быть связана с тем, что я использую не Springboot, а Spring. Так какой же будет способ Springboot для его запуска?
Редактирование: Причина, по которой я хочу сделать это: у меня есть анализатор, который анализирует текстовые файлы, используемые регулярные выражения хранятся в файле свойств. Чтобы проверить это, я хотел бы загрузить только свойства, необходимые для этого синтаксического анализатора, которые находятся в примере над TestSettings.
Читая комментарии, я уже заметил, что это больше не модульные тесты. Однако использование полной конфигурации загрузки Spring для этого небольшого теста кажется мне слишком сложным. Вот почему я спросил, есть ли возможность загружать только один класс со свойствами.