【发布时间】: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 多个角色我无法以这种方式添加它们我需要一个方法或其他东西
-
我会重写你的常量来使用枚举。