“方法x对于类型不明确” Mokito JUnit错误

时间:2018-07-02 11:58:56

标签: 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 )
    {
        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()没有被调用。

1 个答案:

答案 0 :(得分:1)

由于方法签名不同,看来Child并没有真正覆盖getStr的{​​{1}}方法。

因此,编译器无法在调用Main时确定应实际调用哪个方法。是Child.getStr(anyObject())还是getStr(Dataset<Row> records )getStr(JavaRDD<String> obj)方法提供了一个与 any 类匹配的对象。

我建议重命名其中一种方法,或使用anyObject,这将告诉编译器使用any(Dataset.class)的方法,如下所示:

Child