【问题标题】:Mock private static final variables in the testing class在测试类中模拟私有静态最终变量
【发布时间】:2013-10-17 12:39:44
【问题描述】:

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

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

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

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

【问题讨论】:

标签: java junit junit4 easymock powermock


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    请参阅this question 了解示例

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我不想测试这个。问题是“MyClassFactory”在另一个项目中。因此,在进行单元测试时,它找不到工厂并出现问题。我只是想通过他们。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多