java - Type 中的方法不适用于 varargs 方法升级到 Java 1.8 的参数

标签 java java-8 mockito

我在我的项目中使用 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/

相关文章:

java - 为什么我的栏上的菜单显示在容器中的 JPanel 下方?

java - (关于拦截器)spring @Controller 和 @RestController 的区别

java - Google Cloud Messaging - 检查设备是否已经注册

java - 在 Java 中将 URL 映射到请求处理程序的最简单方法

java - 如何更改模拟对象的字段值

Java 8 检查其键的 HashMap 是否与包含键的列表相等,并返回它们相等的 HashMap 值

string - 如何在 Java 8 中使用 Map Put 操作编写字符串迭代?

java - 使用 Java 8 计算两个日期之间的天数,同时忽略一周中的某些天数

java - 如何使用 Mockito 测试不模拟对象的异步方法?

java - 如何在 Spring Boot 项目中模拟 .properties 文件