使用powermock抑制类的构造函数时,如何设置私有final字段的值?
压制构造函数:
suppress(constructor(ABC.class, MyType.class));
ABC abc = spy(new ABC(null)); // using the correct value doesn't work
abc.someMethod();
要测试的课程:
class ABC {
private final MyType test;
public ABC(MyType test) {
this.test = test;
// executes code to be suppressed
}
public void someMethod() {
test.doSomethingElse();
}
}
答案 0 :(得分:2)
正如您通常所做的那样,使用反射:
Field f = ABC.class.getDeclaredField("test");
f.setAccessible(true);
f.set(abc, new MyType());
这与模拟无关,因此其API中没有任何模拟框架。您应该考虑重构以进行测试。