1

这令人困惑。我有一个属性 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时它不会失败?

谢谢

4

1 回答 1

1

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

于 2013-06-03T15:16:42.680 回答