2

我有一个集成测试设置,例如:

@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 的值)。

然而,这感觉不对,将这门课的知识添加到我的测试中。我的问题是如何正确解决这个问题?

4

0 回答 0