我正在尝试模拟静态方法
PowerMockito.mockStatic(ABC.class);
Mockito.when(ABC.selectSingleValue(any(java.sql.Connection.class), any(String.class), Matchers.<Object>anyVararg())).thenReturn("TestStatic");
以下是我得到的例外情况:
java.lang.NoSuchMethodError: org.mockito.internal.matchers.LocalizedMatcher.getMatcher()Lorg/mockito/ArgumentMatcher;
at org.powermock.api.mockito.internal.invocation.PowerMockMatchersBinder.extractArgumentMatchers(PowerMockMatchersBinder.java:60)
at org.powermock.api.mockito.internal.invocation.PowerMockMatchersBinder.bindMatchers(PowerMockMatchersBinder.java:44)
at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:59)
at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.performIntercept(MockitoMethodInvocationControl.java:275)
at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.invoke(MockitoMethodInvocationControl.java:201)
at org.powermock.core.MockGateway.doMethodCall(MockGateway.java:173)
at org.powermock.core.MockGateway.doMethodCall(MockGateway.java:155)
at org.powermock.core.MockGateway.methodCall(MockGateway.java:132)
a
答案 0 :(得分:1)
我使用的是PowerMock 1.7.4,而使用的是Mockito 2.22.0。我通过咨询compatibility table解决了该问题,并发现必须将Mockito降级为2.8.9。完成后,异常停止出现。
答案 1 :(得分:0)
查看doc for maven central上的最新稳定版本:
没有getMatcher方法。
您可以在
中看到它在测试版中稍后添加getMatcher
public ArgumentMatcher getMatcher()
答案 2 :(得分:0)
这是版本兼容性问题。如果您使用的是Mockito 1.10.8 - 1.10.x,则应使用模块powermock-api-mockito
1.6.2。
如果你想使用Mockito 2(看起来你使用它),那么你应该使用模块powermock-api-mockito2
。建议使用PowerMock 1.7.0RC4。
有关版本兼容性的更多信息,请参阅here