方法play(Class <t>)不适用于参数(Class)

时间:2016-06-15 12:48:07

标签: java generics mockito

我有这段代码:

when(mockedObject.play(any(Class.class))).thenReturn(object);

方法play的标题如下:

public Object play(Class<T> classz)

当我运行测试时,我收到此错误:

  

方法play(Class<T>)不适用于参数(Class)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

This question类似。你想要:

when(mockedObject.play(Matchers.<Class<T>>any())).thenReturn(object);

或者在Java 8中,您可以致电:

when(mockedObject.play(Matchers.any())).thenReturn(object);

假设T是您所嘲笑的对象的泛型,您将需要将其替换为您已实例化的任何内容mockedObject。所以,如果你有这样的东西:

@Mock
Foo<Bar> mockedObject;

你想要使用:

when(mockedObject.play(Matchers.<Class<Bar>>any())).thenReturn(object);

答案 1 :(得分:0)

尝试投射,这样做:

when(mockedObject.play((Class<?>)any(Class.class))).thenReturn(object);