PowerMockito 似乎无法匹配和重载方法 [英] PowerMockito can't seem to match and overloaded method
本文介绍了PowerMockito 似乎无法匹配和重载方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我似乎无法克服这个问题.我正在尝试模拟一个需要 1 个参数的重载方法
I can't seem to overcome this problem. I'm trying to mock an overloaded method that takes 1 argument
class ClassWithOverloadedMethod {
private boolean isValid(ClassA a){
return true;
}
private boolean isValid(ClassB B){
return false;
}
}
模拟设置
ClassWithOverloadedMethod uut = PowerMockito.spy(new ClassWithOverloadedMethod());
PowerMockito.doReturn(true).when(uut, "isValid", Matchers.isA(ClassB.class));
但 PowerMockito 一直返回此错误
but PowerMockito keeps returning this error
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)
我正在使用 PowerMockito 1.5 和 Mockito 1.9.5
I'm using PowerMockito 1.5 with Mockito 1.9.5
推荐答案
尝试使用接受 Method 对象的 when()
方法之一.您可以使用 Whitebox 通过指定参数 type 来检索您想要的方法实例,该参数应该可以解决您当前的问题.
Try using one of the when()
methods that accepts a Method object. You can use Whitebox to retrieve the method instance you want by specifying the parameter type which should get around your current issue.
类似
Method m = Whitebox.getMethod(ClassWithOverloadedMethod.class, ClassB.class);
PowerMockito.doReturn(true).when(uut, m).withArguments(Matchers.any(ClassB.class));
另见
- http://powermock.googlecode.com/svn/docs/powermock-1.5.1/apidocs/org/powermock/api/mockito/expectation/PowerMockitoStubber.html#when(java.lang.Class,%20java.lang.reflect.Method)
- http://powermock.googlecode.com/svn/docs/powermock-1.5.1/apidocs/org/powermock/reflect/Whitebox.html#getMethod(java.lang.Class,%20java.lang.Class...)
这篇关于PowerMockito 似乎无法匹配和重载方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文