我有一个集成测试设置,例如:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {XmlFileSplitter.class, ...})
public class XmlFileSplitterTests { ..
在XmlFileSplitter
我有一个带有注释的属性,@Value("${default.output.file}")
它的值是从application.properties
. 这在正常运行应用程序时工作正常。但是,在运行集成测试时,该值未解析(它是“ ${default.output.file}
”)。当我调试解决占位符的代码时,我注意到在测试中它是空的,而在正常运行应用程序org.springframework.beans.factory.support.AbstractBeanFactory embeddedValueResolvers
时包含一个。PropertySourcesPlaceholderConfigurer
我看到PropertyPlaceholderAutoConfiguration
从 spring-boot-autoconfigure 到配置属性占位符的正常运行,我想我需要将这个类添加到SpringApplicationConfiguration
类中,以便为集成测试配置它。我添加了它:
@SpringApplicationConfiguration(classes = {XmlFileSplitter.class, ... , PropertyPlaceholderAutoConfiguration.class})
它现在确实解析了@Value
注释(使用来自 application.properties 的值)。
然而,这感觉不对,将这门课的知识添加到我的测试中。我的问题是如何正确解决这个问题?