Java Mockito.any()匹配泛型类型T的任何实例
我试图模拟一个void方法,每次都抛出一个异常。该方法将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) {
列表
作为参数。如何将其传递到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());