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);
}
}