Java Mockito.any()匹配泛型类型T的任何实例

Java Mockito.any()匹配泛型类型T的任何实例,java,generics,mockito,Java,Generics,Mockito,我试图模拟一个void方法,每次都抛出一个异常。该方法将列表作为参数。如何将其传递到Mockito.any() Mockito.doThrow(新异常()) .when(myClassInstanceSpy) .myVoidMethod(Mockito.any(List.class));//这失败了! 以下是我的类定义: class MyClass { ... public void myVoidMethod(List<SomeClass> scList) {

我试图模拟一个void方法,每次都抛出一个异常。该方法将
列表
作为参数。如何将其传递到
Mockito.any()

Mockito.doThrow(新异常())
.when(myClassInstanceSpy)
.myVoidMethod(Mockito.any(List.class));//这失败了!

以下是我的类定义:

class MyClass {
    ... 
    public void myVoidMethod(List<SomeClass> scList) {
        // ...
    }
}
class-MyClass{
... 
公共作废myVoidMethod(列表scList){
// ...
}
}
试试:

Mockito.doThrow(new Exception())
   .when(myClassInstanceSpy)
   .myVoidMethod(Mockito.anyListOf(SomeClass.class));

可以使用显式方法类型指定泛型:

Mockito.doThrow(new Exception())
   .when(myClassInstanceSpy)
   .myVoidMethod(Mockito.<List<SomeClass>>any());
Java 8允许参数类型推断,因此如果您使用Java 8,这可能也适用:

Mockito.doThrow(new Exception())
   .when(myClassInstanceSpy)
   .myVoidMethod(Mockito.any());

我不使用Java8,但
Mockito.any()
似乎非常方便。谢谢。
Mockito.any()
现在不推荐使用。@MartinSchröder您能添加一个链接吗?从2.22起未弃用。已弃用,并且从Mockito 2.x开始,语义更改为更像
isA(Class)
而不是
any()
,但据我所知,没有
any
重载被弃用。@JeffBowman你说得对。我把它与
匹配器
混淆了,后者被弃用,取而代之的是
参数匹配器
Mockito.doThrow(new Exception())
   .when(myClassInstanceSpy)
   .myVoidMethod(Mockito.anyListOf(SomeClass.class));
Mockito.doThrow(new Exception())
   .when(myClassInstanceSpy)
   .myVoidMethod(Mockito.any());