我正在将一个项目从Java 7迁移到8,并且遇到了一个Mockito "when" case的编译错误,我很难找到它的问题所在:
when(queryRunner.query(any(String.class), any(ResultSetHandler.class), anyVararg())).thenReturn(mockedWordResultList);
给我一个编译错误:
java: reference to query is ambiguous both method
<T>query(java.lang.String,java.lang.Object,org.apache.commons.dbutils.ResultSetHandler<T>)
in org.apache.commons.dbutils.QueryRunner and method
<T>query(java.lang.String,org.apache.commons.dbutils.ResultSetHandler<T>,java.lang.Object...)
in org.apache.commons.dbutils.QueryRunner match
这个错误发生在1.8.0-b128版本构建中,但在1.7.0_45版本中未发生。我正在使用mockito 1.9.5。
在Java 8中正确使用anyVarArg()
参数匹配的方法是什么?
Object[]
会发生什么? - Dawood ibn Kareem(Object[])anyVararg()
作为第三个参数传递。 - Dawood ibn KareemMatchers
中添加一个类似于public <T> T[] anyVarargOf(Class<T>)
的方法。但是目前为止,我还不知道足够的信息来写出一个好的答案。 - Dawood ibn Kareem