如何使用 PowerMockito 在静态方法中模拟新的 class 实例
How to use PowerMockito to mock new class instance inside a static method
我有一个带有静态方法的 class,在静态方法中我创建了另一个 class 的实例并将其保存在地图中。我需要为此方法编写单元测试。最好的方法是什么?
例如:
public class MyClass {
public static synchronized void method (String str1, String str2, Object obj){
do something.....
DifferentClass dc = new DifferentClass(str1,str2,obj);
dc.methodCall();
do something.....
}
}
尝试使用:
DifferentClass dc = PowerMockito.mock(DifferentClass.class);
PowerMockito.whenNew(DifferentClass.class).withArguments(str1,str2,obj).thenReturn(dc);
而且我得到了空指针异常
dc.methodCall();
谢谢
模拟可能不起作用。在 withArguments() 方法调用中使用 Powermockito.anyString() 或类似的东西(我不确定正确的版本)。不要这样使用字符串。
确保 @PrepareForTest
中有 MyClass
。
另外,我建议使用 withParameterTypes
。这不是强制性的,但它有助于避免一些错误。
我有一个带有静态方法的 class,在静态方法中我创建了另一个 class 的实例并将其保存在地图中。我需要为此方法编写单元测试。最好的方法是什么?
例如:
public class MyClass {
public static synchronized void method (String str1, String str2, Object obj){
do something.....
DifferentClass dc = new DifferentClass(str1,str2,obj);
dc.methodCall();
do something.....
}
}
尝试使用:
DifferentClass dc = PowerMockito.mock(DifferentClass.class);
PowerMockito.whenNew(DifferentClass.class).withArguments(str1,str2,obj).thenReturn(dc);
而且我得到了空指针异常 dc.methodCall();
谢谢
模拟可能不起作用。在 withArguments() 方法调用中使用 Powermockito.anyString() 或类似的东西(我不确定正确的版本)。不要这样使用字符串。
确保 @PrepareForTest
中有 MyClass
。
另外,我建议使用 withParameterTypes
。这不是强制性的,但它有助于避免一些错误。