如何使用@ConfigurationProperties和@Autowired测试类
我想测试依赖于加载了 和 的属性的应用程序的一小部分。我正在寻找一个解决方案,仅加载所需的属性,而不是始终加载整个.这里作为简化的示例:@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
在我当前的设置中,配置不为空,但没有可用的字段。字段不是字段的原因应该与我使用的不是Springboot而是Spring的事实有关。那么,Springboot的运行方式是什么呢?
编辑:我想这样做的原因是:我有一个解析器来解析Textfiles,使用的正则表达式存储在属性文件中。为了测试这一点,我只想加载这个解析器所需的属性,这些属性位于TestSettings上方的exaple中。
在阅读评论时,我已经注意到这不再是单元测试了。但是,对于这个小测试使用完整的Spring启动配置对我来说似乎有点过分了。这就是为什么我问是否有可能只加载一个具有属性的类。