在测试类中模拟私有静态final变量

我在要测试的类中有一些私有的静态final字段。 如下

public class ClassToTest{ .... private static final Myclass myclass = MyClassFactory.getMyClass(type.firstType); .... } 

该类型是MyClassFactory中的枚举。 那个工厂做的是根据传递和返回的类型初始化对象。

我的问题是powermock是否支持这一点,如果是的话,该如何做到这一点。

如果任何模拟库适合您,您也可以使用reflection。

 Field f = classToTest.getclass().getDeclaredField("myclass "); f.setAccessible(true); f.set(classToTest,/*NEW VALUE*/); 

PowerMock(+一个模拟框架)将允许您这样做。 假设您在谈论模拟MyClassFactory.getMyClass()?

请参阅此问题以获取示例

为什么要测试这个值? 你不应该测试你的枚举,测试当给定类型传递给它时它是否返回正确的值。 如果你想测试enum到字段的赋值,你会怀疑基本的java赋值。