运行JUnit测试时不会使用Spring @Value默认属性

时间:2013-06-03 15:02:16

标签: spring properties junit

这令人困惑。我有一个属性outerParameter,在启动tomcat时可以选择在VM选项中给出。我在我的逻辑中通过以下方式使用它:

@Value("${outerParameter:paused}")
private String featureStatus = "active";

public String getFeatureStatus() {
   return featureStatus;
}

在没有参数的情况下启动tomcat时 - getFeatureStatus会按预期给出“暂停”。以定义参数启动时 - 按预期提供此参数值。 令人困惑的部分是,当我为getFeatureStatus运行JUnit测试时,它无论如何都给了我“活动”而不是默认的“暂停”。测试的上下文不包含任何<context:property-placeholder../>配置。

我试图了解我所缺少的东西,也许有人可以帮我一把

我发现了这个: Spring @Value annotation not using defaults when property is not present 这也可能是我案件的答案。它说“也许属性占位符配置器的初始化因错过属性文件而失败,因此占位符未被解析”。 但是,如果是这样,为什么在没有定义outerParameter的情况下启动tomcat时它不会失败?

由于

1 个答案:

答案 0 :(得分:1)

这意味着该属性未加载到测试用例的类路径中。尝试在上下文中加载属性文件以进行测试。