Java &引用;方法x对于类型“不明确”;莫基托JUnit错误
我的主要课程如下:-Java &引用;方法x对于类型“不明确”;莫基托JUnit错误,java,junit,mockito,Java,Junit,Mockito,我的主要课程如下:- class Main { String str = ""; protected String getStr(JavaRDD<String> obj) { return "Main"; } } class Child extends Main { String str = ""; protected String getStr(Dataset<Row> records ) {
class Main
{
String str = "";
protected String getStr(JavaRDD<String> obj)
{
return "Main";
}
}
class Child extends Main
{
String str = "";
protected String getStr(Dataset<Row> records )
{
return "Child";
}
}
//My test class :-
class mainTest extends Child
{
Child child;
@Test
public void testGetStr()
{
child = Mockito.mock(Child .class);
Mockito.when(child.getStr(anyObject())).thenCallRealMethod();//Compilation Error
}
}
主类
{
字符串str=“”;
受保护字符串getStr(JavaRDD obj)
{
返回“Main”;
}
}
类子级扩展主
{
字符串str=“”;
受保护的字符串getStr(数据集记录)
{
返回“孩子”;
}
}
//我的测试班:-
类mainTest扩展子类
{
儿童;
@试验
公共void testGetStr()
{
child=Mockito.mock(child.class);
Mockito.when(child.getStr(anyObject()).thenCallRealMethod();//编译错误
}
}
我得到的错误是:
方法getStr(数据集)对于类型Child不明确
请让我知道这个问题的解决方案,因为我无权更改主类和子类。当我模拟子类时,
getStr()
没有被调用。看起来child
并没有真正覆盖Main
的getStr
方法,因为方法签名不同
因此,在调用Child.getStr(anyObject())
时,编译器无法判断实际应该调用哪个方法。它应该是getStr(数据集记录)
还是getStr(javarddobj)
?anyObject
方法提供了一个对象,该对象将匹配any类
我建议重命名其中一个方法,或者使用any(Dataset.class)
,这将告诉编译器使用Child
方法,如下所示:
Mockito.when(child.getStr(any(Dataset.class))).thenCallRealMethod();
可能使用部分模拟。然后你可以模拟,但是对于那个特定的方法,use可以调用real方法。any没有帮助。你能用any(Dataset.class)发布版本吗?Mockito.any(Child.class)。getStr(anyObject())。然后调用realmethod();哦,我明白了。它应该替换anyObject()方法。我将编辑我的帖子,以包含整行内容。