【问题标题】:Pass a tab as an annotation parameter: "attribute value must be constant"将选项卡作为注释参数传递:“属性值必须是常量”
【发布时间】:2020-02-23 19:54:46
【问题描述】:

我有一个包含多个常量的类,我想返回除一个之外的所有常量,以便进行一些测试。我做了一个简单的方法,但是当我在注释中使用它时它返回错误“属性值必须是常量”。

public final class RolesConstants {

    public static final String APP_SYSTEM = "APP_SYSTEM";
    public static final String APP_CLIENT = "APP_CLIENT";
    public static final String APP_PROFESSIONAL = "APP_PROFESSIONAL";
    public static final String APP_ADMIN = "APP_ADMIN";
    public static final String PRO_ADMIN = "PRO_ADMIN";
    public static final String PRO_ADD_BOOKING = "PRO_ADD_BOOKING";
    public static final String PRO_EDIT_BOOKING = "PRO_EDIT_BOOKING";
    ...

    public static String[] allRolesButAPP_SYSTEM() {
        return new String[]{ APP_CLIENT, APP_PROFESSIONAL, ... };
    }
}


import org.springframework.security.test.context.support.WithMockUser;

public class ProfessionalResourceIT {

    @WithMockUser(roles = {RolesConstants.allRolesButAPP_SYSTEM()})
    public void cannotGetIfNotSystem(){
        assertThat(...);
    }
}

属性值必须是常数

【问题讨论】:

  • 你的项目中的哪个依赖是WithMockUser提供的?
  • 你试过了吗,像这样@WithMockUser(roles = {RolesConstants.APP_SYSTEM, RolesConstants.APP_CLIENT, so on})
  • 导入 org.springframework.security.test.context.support.WithMockUser;
  • 它确实有效,但我有数千个测试和 10 多个角色我无法以这种方式添加它们我需要一个方法或其他东西
  • 我会重写你的常量来使用枚举。

标签: java spring


【解决方案1】:

你可以试试这样的东西

import org.springframework.security.test.context.support.WithMockUser;

public class ProfessionalResourceIT {

    @WithMockUser(roles = {RolesConstants.APP_SYSTEM, RolesConstants.APP_CLIENT, so on})
    public void cannotGetIfNotSystem(){
        assertThat(...);
    }
}

【讨论】:

  • @Antoine,你试过我的解决方案了吗,对你有用吗?
  • @Antoine,哦,那么不确定,有没有办法通过一次性传递整体来实现同样的目标..
  • @Antoine,不幸的是,您不能对数组执行此操作,也就是说,您也编辑了我的解决方案,似乎您需要在我的回答中一一传递所有值,我们可以在这里了解更多信息stackoverflow.com/a/2067863/7414166
  • 其实这正是我不想做的(一一传递),因为我有超过 10 个“角色”
  • @Antoine,是的,可以理解,但我现在似乎没有任何其他解决方案来解决这个问题..
猜你喜欢
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多