【问题标题】:Spring @Value default property is not taken when runing JUnit tests运行 JUnit 测试时不采用 Spring @Value 默认属性
【发布时间】:2013-05-29 18:51:04
【问题描述】:

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

谢谢

【问题讨论】:

  • 可以分享一下tomcat加载的上下文文件吗?

标签: spring properties junit


【解决方案1】:

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

【讨论】:

  • 谢谢。但是为什么在启动tomcat时默认值会成功下载呢?我没有更改 tomcat 上下文文件中的任何内容,它是标准安装。只需设置工件即可通过 Intellij IDEA 启动 tomcat 和项目。
  • 您的tomcat 可能正在加载上下文文件,即成功加载默认属性文件。请分享tomcat加载的上下文文件。能够更好地提供帮助
  • 如果我理解你的话,你问的是 Tomcat/conf/context.xml。它只包含 WEB-INF/web.xml web.xml 可以通过以下链接下载filedropper.com/web_1
  • 没有。我在询问 Spring 上下文 xml 文件,您驻留在 Tomcat 中的 Web 应用程序正在加载该文件。请使用文件内容而不是上传来编辑问题。由于各种限制,可能无法访问。
  • 对不起,我在哪里可以找到它?
猜你喜欢
  • 1970-01-01
  • 2011-06-09
  • 2017-08-31
  • 2016-01-03
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多