Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么mockito在存根时调用父方法_Java_Junit_Mocking_Mockito - Fatal编程技术网

Java 为什么mockito在存根时调用父方法

Java 为什么mockito在存根时调用父方法,java,junit,mocking,mockito,Java,Junit,Mocking,Mockito,为什么mockito调用stubbed方法 为什么在when..thenReturn下实际调用func 我在调试时已经检查过了 @Test public void function(){ MyClassChild obj = mock(MyClassChild.class); when(obj.func("abc")).thenReturn(3); } ... class MyClass { public int fu

为什么mockito调用stubbed方法

为什么在when..thenReturn下实际调用func 我在调试时已经检查过了

  @Test
    public void function(){
       MyClassChild obj = mock(MyClassChild.class);
       when(obj.func("abc")).thenReturn(3);
    }
    ...
    class MyClass {
       public int func(String s) {
          if (s.equals("abc"))
             return 3;
          else
             return 1;
       }
    }

class MyClassChild extends MyCLass {

    }

我尝试通过进行以下测试来重播您的问题:

public class StackTest {
    @Test
    public void mockedFunction() {
        MyClass obj = mock(MyClass.class);
        when(obj.func("abc")).thenReturn(3);

        assertEquals(3, obj.func("abc"));
    }

    @Test
    public void function() {
        MyClass obj = new MyClass();

        assertEquals(7, obj.func("abc"));
    }
}


成功执行的所有测试。你能展示一下你是如何调用这个测试的吗?

MyClass
在OP中不是公共的……可能这就是问题所在。你们可以看看@Som Bhattacharyya在一篇评论中指出了什么我已经弄明白了,我在模仿子类并尝试在父函数中使用“when..then()”。我认为mockito在父类方法中不能正常工作。
public class MyClass {

    public int func(String s) {
        if (s.equals("abc"))
            return 7;
        else
            return 9;
    }
}