Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用泛型参数模拟方法_Java_Unit Testing_Junit_Mockito - Fatal编程技术网

Java 无法使用泛型参数模拟方法

Java 无法使用泛型参数模拟方法,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我在类中有一个定义如下的函数,比如堆栈- public <K, T> T nameOfFunction(final String string1, final K usebByFunction, final Class<T> returnType) 我可以使用(String)any()模拟字符串参数,但无法模拟其他两个-K和类。我需要模拟此调用以抛出CallFailedException Mockito.any()不适用于您案例中的类型类。如果您在您的条件中指定Mock

我在类中有一个定义如下的函数,比如堆栈-

public <K, T> T nameOfFunction(final String string1, final K usebByFunction, final Class<T> returnType)
我可以使用(String)any()模拟字符串参数,但无法模拟其他两个-K和类。我需要模拟此调用以抛出CallFailedException

Mockito.any()不适用于您案例中的类型类。如果您在您的条件中指定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);
    }
}
公共类TestClass
{
公共类MyClass
{
公共T检验(字符串s、K obj、最终类clazz)
{
返回null;
}
}
@试验
公开无效测试()
{
MyClass MyClass=Mockito.mock(MyClass.class);
Mockito.when(myClass.test(Mockito.anyString(),Mockito.any(),Mockito.any(Class.Class)).thenthow(new illegargumentexception());
test(null,null,null);
}
}

您有避免强制转换的anyString();至于另一个,你尝试了什么?(因为任何一个(K类),K类都应该有效)它不起作用。
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);
    }
}