【发布时间】:2017-03-02 12:35:22
【问题描述】:
我在我的项目中使用 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
谁能帮我解决这个错误?谢谢
【问题讨论】:
-
这是一个编译错误,这个 myService 中可能有一些模糊的方法声明会导致这种情况,虽然你的方法签名和它的模拟看起来不错,你能发布更多关于这个
MyService班级?您的 IDE 上没有收到任何错误/警告吗? -
我在 java 1.7 和 1.8 中都没有遇到与你的代码完全相同的错误,也许你的测试指的是过时的方法、类等。你使用的是 maven 吗?尝试做一个
mvn clean install,这可能是罪魁祸首,除此之外什么都没有想到:/ -
提示:仍在等待关于答案的任何类反馈。我以为只有我们这些新手在这里提出问题并且从不费心回头看;-(