【问题标题】:Java Spring - How to use value from application.properties with @WithUserDetailsJava Spring - 如何通过@WithUserDetails 使用来自application.properties 的值
【发布时间】:2019-06-30 18:15:11
【问题描述】:

我想为我的测试使用application.properties 中的值和@WithUserDetails() 注释。

我当前的代码:

@Value("${user.admin}")
private String ADMIN;

@Test
@WithUserDetails(ADMIN)
public void foo() { 
}

显示错误“属性值必须是常量”

我正在将junit4与spring runner一起使用

【问题讨论】:

  • @Deadpool 这似乎只是将字符串 ${user.admin} 作为值传递,而不是从 application.properties 获取值
  • 尝试将变量设为静态变量。示例:私有静态最终字符串 ADMIN;
  • @Clover nope 不起作用,谢谢朋友!
  • 好吧,你不应该用大写字母写简单的成员变量,因为这通常只用于常量。 ADMIN 不是常量,这是你的问题(Java 注释只接受常量作为参数,即字符串文字或 static final 以字符串文字作为值的成员)。

标签: java spring spring-boot junit junit4


【解决方案1】:

似乎无法做到这一点,Java 编译器不允许这样做,因为它不会将来自 @Value() 的值视为编译时的常量。

【讨论】:

    【解决方案2】:

    java 内置了读取 .properties 文件的功能,而 JUnit 内置了在执行测试套件之前运行设置代码的功能。

    java读取属性:

    Properties p = new Properties();
    p.load(new FileReader(new File("application.properties")));
    

    junit startup documentation

    把这两个放在一起,你应该有你需要的东西。

    但是,最低要求是您的 test->resources 包中也有 application.properties 文件。

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      相关资源
      最近更新 更多