代码之家  ›  专栏  ›  技术社区  ›  Hasnain Ali Bohra

“方法x对于类型”mokito junit error不明确

  •  1
  • Hasnain Ali Bohra  · 技术社区  · 7 年前

    我的主要课程如下:

    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

    请告诉我解决方案,因为我无权更改 主要的 孩子 类。当我嘲笑的时候 儿童班 这个 getStr() 没有被呼叫。

    1 回复  |  直到 7 年前
        1
  •  1
  •   ggradnig    7 年前

    看起来像 Child 没有真正覆盖 getStr 方法 Main ,因为方法签名不同。

    因此,编译器无法判断在调用 Child.getStr(anyObject()) . 应该是吗 getStr(Dataset<Row> records ) 或者应该是 getStr(JavaRDD<String> obj) ?这个 anyObject 方法提供将匹配的对象 任何 班级。

    我建议重命名其中一个方法,或者使用 any(Dataset.class) 它将告诉编译器使用 孩子 ,如下所示:

    Mockito.when(child.getStr(any(Dataset.class))).thenCallRealMethod();