我想模仿PermissionHostCompat类的动作requestPermission(@NonNull String permission, int requestCode)
。
public class PermissionHostCompat {
(...)
public void requestPermission(@NonNull String permission, int requestCode) {
requestPermissions(new String[]{permission}, requestCode);
}
public void requestPermissions(@NonNull String[] permissions, int requestCode) {
if (activity != null) {
ActivityCompat.requestPermissions(activity, permissions, requestCode);
} else if (fragment != null) {
FragmentCompat.requestPermissions(fragment, permissions, requestCode);
} else {
fragmentv4.requestPermissions(permissions, requestCode);
}
}
(...)
}
我是如何做到的:
@Mock
PermissionHostCompat permissionHostCompat;
//...
Answer<Void> requestPermissionAction = new Answer<Void>() {
public Void answer(InvocationOnMock invocation) {
// some code
return null;
}
};
doAnswer(requestPermissionAction).when(permissionHostCompat)
.requestPermission(anyString(), anyInt());
它引发了我的错误:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
无效使用参数匹配器! 预计0匹配,2记录:如果匹配器与原始值组合,则可能会发生此异常:
//不正确:
someMethod(anyObject(),&#34; raw String&#34;);
使用匹配器时,所有参数都必须由匹配器提供。
例如:
//正确:
someMethod(anyObject(),eq(&#34; matcher by matcher&#34;));
我不知道为什么。我还尝试了any(String.class)
,any(int.class)
以及所有选项之间的组合。
我的进口商品:
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import staticorg.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.when;
Mockito版本:1.10.19
我做错了什么?
答案 0 :(得分:0)
尝试使用Mockito 2.但是应该更改导入:
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Matchers.anyString;