Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.mockito.exceptions.misusing.invalidUseofMatchers异常:_Java_Junit_Mockito_Matcher - Fatal编程技术网

Java org.mockito.exceptions.misusing.invalidUseofMatchers异常:

Java org.mockito.exceptions.misusing.invalidUseofMatchers异常:,java,junit,mockito,matcher,Java,Junit,Mockito,Matcher,我在服务和测试类中的方法: public void updateSubModuleOrder(Long[] data, Long moduleSysId, Long userId) { try { for (int i = 0; i < data.length; i++) { SubModule subModule=new SubModule(); int temp = i + 1; user

我在服务和测试类中的方法:

public void updateSubModuleOrder(Long[] data, Long moduleSysId, Long userId) {
    try {
        for (int i = 0; i < data.length; i++) {
            SubModule subModule=new SubModule();

            int temp = i + 1;
            userSubmodule.setDsplySeq(temp);
            userSubModuleDao.saveOrUpdate(userSubmodule);
@Test
public void testupdateSubModuleOrder(){
    UserModuleServiceImpl userModuleServiceImpl = new UserModuleServiceImpl();
    UserSubModuleDao userSubModuleDao = mock(User//set the required param ,some code here//
    UserSubModuleId userSubModuleId=new UserSubModuleId();
    //some code//
    when(userSubModuleDao.findById((any(UserSubModuleId.class)),false)).thenReturn(userSubModule);
    when(userSubModuleDao.saveOrUpdate(any(UserSubModule.class))).thenReturn(null);
    userModuleServiceImpl.updateSubModuleOrder(data, moduleSysId, userId);

};*
如果匹配器与原始值组合,则可能发生此异常:

//incorrect:
someMethod(anyObject(), "raw String");
使用匹配器时,所有参数都必须由匹配器提供。 例如:

//correct:
someMethod(anyObject(), eq("String by matcher"));

方法
findbyID
是我的dao扩展的baseDao方法。这不是最终的或静态的,但我还是遇到了这个问题。

您要么不指定匹配器,要么所有参数都需要匹配。因此:

when(userSubModuleDao.findById((any(UserSubModuleId.class)),false))
应该是:

when(userSubModuleDao.findById(any(UserSubModuleId.class), eq(false)))
(我已经从
任何调用中删除了多余的括号。)

从:

警告:

如果使用参数匹配器,所有参数必须由匹配器提供


确保所有参数都在使用匹配器(
anyXX
eq
):
userSubModuleDao.findById((any(UserSubModuleId.class)),false)
看起来可疑可能与我尝试使用doRetrun()时重复。When(),它给出以下错误。TestUserModuleServiceImpl.testupdateSubModuleOrder(TestUserModuleServiceImpl.java:270)例如,可能缺少thenReturn()。正确的存根示例:when(mock.isOk()).thenReturn(true);when(mock.isOk()).thenthow(异常);doThrow(异常).when(模拟).someVoidMethod();提示:1。缺少返回()2。你正在尝试一个最终的方法,你这个淘气的开发者!无论如何,我已经恢复到最初的行和它的工作现在。最新的Matchers文件。(Mockito 1.x)我的情况是由于方法访问级别为
包级别
,将方法更改为
受保护
修复了我的问题。
when(userSubModuleDao.findById(any(UserSubModuleId.class), eq(false)))