gpt4 book ai didi

java - 使用 PowerMockito 模拟 Singleton Public/Void 方法失​​败

转载 作者:行者123 更新时间:2023-12-02 04:16:19 25 4
gpt4 key购买 nike

所以这是场景:

public class classA implements classRandom {
public void methodA(arg1, arg2) {
POJOb objB;
objB = SingletonClass_Instance().singletonMethodA(arg1);
}
public SingletonClass SingletonClass_Instance() {
return SingletonClass.getInstance();
}
}

public class SingletonClass {
public objB singletonMethodA(final String arg1) {
return randomObj;
}
}

我正在为 A 类中的 methodA 编写单元测试。为此,我编写了以下 stub 代码:

SingletonClass mockSingletonClass = PowerMockito.mock(SingletonClass.class);
POJOb = PowerMockito.mock(POJOb.class);
Mockito.when(mockSingletonClass.singletonMethodA(Mockito.anyString())).thenReturn(POJOb);

现在,在这段代码之后,我有一个代码:

POJOb objB = classA_Object.methodA(arg1, arg2);

此代码一旦到达:

**methodA -->  SingletonClass_Instance().singletonMethodA**

我已经使用了以下 Powermockito 程序:

1) import PM libs
2) Added @PrepareForTest({SingletonClass.class, POJOb.class})

我仍然无法模拟 SingletonClass 的 Public/Void 方法。它们总是会被证明是空的。

最佳答案

你需要做这样的事情。

PowerMockito.mockStatic(SingletonClass.class);
SingletonClass mockSingleton = PowerMockito.mock(SingletonClass.class);
PowerMockito.when(SingletonClass.getInstance()).thenReturn(mockSingleton);

关于java - 使用 PowerMockito 模拟 Singleton Public/Void 方法失​​败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33273868/

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