Java Mockito doAnswer因未知原因引发InvalidUseofMatcherException
我想模拟PermissionHostCompat类的动作Java Mockito doAnswer因未知原因引发InvalidUseofMatcherException,java,android,mocking,mockito,Java,Android,Mocking,Mockito,我想模拟PermissionHostCompat类的动作requestPermission(@NonNull String permission,int requestCode) public class PermissionHostCompat { (...) public void requestPermission(@NonNull String permission, int requestCode) { requestPermissions(new
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());
@Mock
许可hostcompat许可hostcompat;
//...
Answer requestPermissionAction=新答案(){
公共无效应答(调用锁调用){
//一些代码
返回null;
}
};
doAnswer(requestPermissionAction).何时(permissionHostCompat)
.requestPermission(anyString(),anyInt());
这让我犯了一个错误:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的使用无效!
应为0个匹配器,记录了2个: 如果匹配器与原始值组合,则可能发生此异常:
//不正确:
someMethod(anyObject(),“原始字符串”);
使用匹配器时,所有参数都必须由匹配器提供。
例如:
//正确:
someMethod(anyObject(),eq(“匹配器字符串”) 我不知道为什么。我还尝试了
any(String.class)
,any(int.class)
以及所有选项之间的组合
我的进口:
导入静态org.mockito.Matchers.any;
导入静态org.mockito.Matchers.anyInt;
导入静态org.mockito.Matchers.anyString;
导入staticorg.mockito.mockito.doAnswer;
导入静态org.mockito.mockito.when Mockito版本:1.10.19
我做错了什么?尝试一下Mockito 2是否可以使用。但进口应该改变:
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Matchers.anyString;
试试看它是否能与Mockito2一起工作。但进口应该改变:
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Matchers.anyString;
你能用MCVE上的?作品重现这个异常吗。错误一定在别的地方。你能把它贴出来吗?所以其他人可以复制错误。你的代码对我有效-你没有共享有问题的代码,这是。。。。现在还不知道你不是在一个启用了Proguard的APK中运行这个,是吗?你能用MCVE上的?Works复制这个异常吗。错误一定在别的地方。你能把它贴出来吗?所以其他人可以复制错误。你的代码对我有效-你没有共享有问题的代码,这是。。。。现在还不知道你不是在一个启用了Proguard的APK中运行这个,是吗?