Android 验证Mockito中的列表参数列表

Android 验证Mockito中的列表参数列表,android,unit-testing,testing,mockito,Android,Unit Testing,Testing,Mockito,假设我有一个将List作为参数的方法: public void myFunction(List<List<MyObject>> listOfList) {} 但是,我得到一个未检查的分配警告。我不能使用这些匹配器中的任何一个,因为它们会产生编译错误: // Fails - Expects just a single-layered List<MyObject> verify(myClass).myFunction(anyListOf(MyObject.cla

假设我有一个将
List
作为参数的方法:

public void myFunction(List<List<MyObject>> listOfList) {}
但是,我得到一个未检查的分配警告。我不能使用这些匹配器中的任何一个,因为它们会产生编译错误:

// Fails - Expects just a single-layered List<MyObject>
verify(myClass).myFunction(anyListOf(MyObject.class));

// Fails - "no instance(s) of type variable(s) T exist so that List<T> conforms to Class<T>"
verify(myClass).myFunction(anyListOf(anyListOf(MyObject.class)));
//失败-只需要一个分层列表
验证(myClass).myFunction(anyListOf(MyObject.class));
//Fails—“不存在类型变量T的实例,因此列表符合类”
验证(myClass).myFunction(anyListOf(anyListOf(MyObject.class));

那么,我如何为
List
类型的参数创建类型安全匹配器呢?

您可以使用Matchers.any()创建类型安全匹配器,并使用以下类型对其进行限定:

Matchers.<List<List<MyObject>>>any()
Matchers.any()

不,据我所知这是不可能的。这是一个一般性问题。Mockito为许多泛型类型提供了预定义的匹配器。例如
anyList()
anyMap()
anyString()
。但不适用于
列表
。因此,在我的例子中,您无法获得足够有趣的类型安全匹配器,因为参数引用了一个具体的类,所以可以将其缩短为仅
匹配器.any()
<代码>“此检查报告对参数化方法的所有调用,其中可以省略显式参数类型,因为编译器将明确推断这些参数类型。这种用法使代码过多,因此可读性较差。”
Matchers.<List<List<MyObject>>>any()