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

时间:2013-10-17 12:39:44

标签: java junit junit4 easymock powermock

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

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

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

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

3 个答案:

答案 0 :(得分:4)

如果任何模拟库适合你,你也可以使用反射。

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

答案 1 :(得分:2)

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

请参阅this question以获取示例

答案 2 :(得分:1)

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