gpt4 book ai didi

java - PowerMock - 禁止构造函数但设置私有(private)最终字段

转载 作者:行者123 更新时间:2023-12-02 05:26:33 26 4
gpt4 key购买 nike

当使用powermock抑制类的构造函数时,如何设置私有(private)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();
}
}

最佳答案

像平常一样,通过使用反射:

Field f = ABC.class.getDeclaredField("test");
f.setAccessible(true);
f.set(abc, new MyType());

这与模拟无关,因此模拟框架不会在其 API 中定位任何内容。您应该考虑重构以进行测试。

关于java - PowerMock - 禁止构造函数但设置私有(private)最终字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25959584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com