Tim*_*-ah 3 overloading mockito powermock
我似乎无法克服这个问题.我正在尝试模拟一个带有1个参数的重载方法
class ClassWithOverloadedMethod {
private boolean isValid(ClassA a){
return true;
}
private boolean isValid(ClassB B){
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
模拟设置
ClassWithOverloadedMethod uut = PowerMockito.spy(new ClassWithOverloadedMethod());
PowerMockito.doReturn(true).when(uut, "isValid", Matchers.isA(ClassB.class));
Run Code Online (Sandbox Code Playgroud)
但PowerMockito继续返回此错误
java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method)
at org.powermock.reflect.internal.WhiteboxImpl.checkIfParameterTypesAreSame(WhiteboxImpl.java:2432)
at org.powermock.reflect.internal.WhiteboxImpl.getMethods(WhiteboxImpl.java:1934)
at org.powermock.reflect.internal.WhiteboxImpl.getBestMethodCandidate(WhiteboxImpl.java:1025)
at org.powermock.reflect.internal.WhiteboxImpl.findMethodOrThrowException(WhiteboxImpl.java:948)
at org.powermock.reflect.internal.WhiteboxImpl.doInvokeMethod(WhiteboxImpl.java:882)
at org.powermock.reflect.internal.WhiteboxImpl.invokeMethod(WhiteboxImpl.java:713)
at org.powermock.reflect.Whitebox.invokeMethod(Whitebox.java:401)
at org.powermock.api.mockito.internal.expectation.PowerMockitoStubberImpl.when(PowerMockitoStubberImpl.java:93)
Run Code Online (Sandbox Code Playgroud)
我正在使用PowerMockito 1.5和Mockito 1.9.5
Mat*_*man 12
尝试使用when()接受Method对象的方法之一.您可以使用Whitebox通过指定应解决当前问题的参数类型来检索所需的方法实例.
所以像
Method m = Whitebox.getMethod(ClassWithOverloadedMethod.class, ClassB.class);
PowerMockito.doReturn(true).when(uut, m).withArguments(Matchers.any(ClassB.class));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3766 次 |
| 最近记录: |