我有一些带有常量的类要测试:
public class SomeClass {
private static final String SOME_CONST = "blabla";
我必须在测试中使用它,所以我(使用 Spring ReflectionUtils 和 java.lang 原生库)制作如下:
findField(SomeClass.class, "SOME_CONST").setAccessible(true);
或
makeAccessible(findField(SomeClass.class, "SOME_CONST"));
运行测试
@Test
public void someTest() throws Exception {
String s = SomeClass.SOME_CONST;
我看到我的 Intellij Idea 停止运行,并出现与尝试访问私有(private)字段相关的错误。假设我应该使用某种@SuppressWarnings
或者如何更好地解决这样的问题?
最佳答案
测试私有(private)方法/字段通常是糟糕设计的标志。 如果您不介意展示它,请将其设置为 public 或放置一个 getter 来检索该变量,因为它是最终的,所以您不应该遇到任何麻烦,除非它具有敏感数据或它是一个可变类(不是 String 的情况) 。 或者使用您的方法,执行
Field field = TargetClass.getDeclaredField(fieldName);
field.setAccessible(true);
String someConst = (String) field.get(new SomeClass());
正在关注this hint
关于java - 在测试类中使用可访问的私有(private)字段运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35220417/