我在我的项目中使用 Mocikto 框架(版本 1.9.5)使用 Java 1.7 进行单元测试,现在我正在迁移我的项目以使用 Java 1.8 构建和运行.
在我的一个单元测试中,我试图模拟以下方法
public <T> List<T> myMethod(final String sql, final MyMapper<T> MyMapper, final Argument... args)
用这段代码
String learningId = "testLeaId";
String catalogId = "testCatId";
List<String> returnList = new ArrayList<String>();
returnList.add(catalogId);
when(myService.myMethod(Mockito.anyString(), Mockito.any(MyMapper.class), (Argument[]) Mockito.anyVararg())).thenReturn(returnList);
现在,当我在我的 pom.xml 中将我的 Java 版本升级到 1.8 时,此代码在 Java 1.7 上工作正常,我收到以下错误...
[ERROR] The method myMethod(String, MyMapper<T>, Argument...) in the type MyService is not applicable for the arguments (String, MyMapper, Argument)
C:\somepath\MyDaoTest.java:59
谁能帮我解决这个错误?谢谢
最佳答案
在 Java 8 中,类型推断得到了改进,因此您应该能够更改
Mockito.any(MyMapper.class)
到
Mockity.any()
例如。 (假设您使用的是最新版本的 Mockito 本身)
然后你可以发现...... anyVarArg()
是 deprecated ,并为此使用 any()
!
关于java - Type 中的方法不适用于 varargs 方法升级到 Java 1.8 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42555707/