Java Mockito doAnswer因未知原因引发InvalidUseofMatcherException

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

我想模拟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());
@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中运行这个,是吗?