我有主类,如:-
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
}
}
我得到的错误是:
The method getStr(Dataset<Row>) is ambiguous for the type Child
请让我知道此解决方案,因为我无权更改 Main 和 Child 类。就像当我嘲笑子类时,getStr()
没有被调用。
答案 0 :(得分:1)
由于方法签名不同,看来Child
并没有真正覆盖getStr
的{{1}}方法。
因此,编译器无法在调用Main
时确定应实际调用哪个方法。是Child.getStr(anyObject())
还是getStr(Dataset<Row> records )
? getStr(JavaRDD<String> obj)
方法提供了一个与 any 类匹配的对象。
我建议重命名其中一种方法,或使用anyObject
,这将告诉编译器使用any(Dataset.class)
的方法,如下所示:
Child