无法模拟具有通用参数的方法

时间:2018-08-03 10:10:35

标签: java unit-testing junit mockito

我在一个类中有一个具有以下定义的函数,例如Stack-

public <K, T> T nameOfFunction(final String string1, final K usebByFunction, final Class<T> returnType)

我使用了以下Mockito呼叫-

Mockito.when(instanceOfStack.nameOfFunction((String) any(), - , - ).thenThrow(CallFailedException.class))

我能够使用(String)any()模拟String参数,但无法模拟其他两个参数-K和Class。我需要模拟此调用以引发CallFailedException。

1 个答案:

答案 0 :(得分:0)

Mockito.any()不适用于您的情况下的Class类型。如果在您的条件下指定Mockito.any(Class.class),应该没问题。

public class TestClass
{
    public class MyClass
    {
        public <K, T> T test(String s, K obj, final Class<T> clazz)
        {
            return null;    
        }
    }

    @Test
    public void test()
    {
        MyClass myClass = Mockito.mock(MyClass.class);

        Mockito.when(myClass.test(Mockito.anyString(), Mockito.any(), Mockito.any(Class.class))).thenThrow(new IllegalArgumentException());

        myClass.test(null, null, null);
    }
}