我正在使用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
任何人都可以帮我解决这个错误吗?谢谢
答案 0 :(得分:1)
使用Java 8,类型推断已得到改进,因此您应该能够更改
Mockito.any(MyMapper.class)
到
Mockity.any()
例如,。 (假设您使用的是最近版本的Mockito本身)
然后你可以找到anyVarArg()
deprecated,并使用any()
也是如此!
答案 1 :(得分:0)
我认为Java 8有点类型保存,因为您希望拥有MyMapper<T>
,但仅使用MyMapper
访问它。
解决方案可能是使用
Mockito.<MyMapper<ConcreteType>>any()