Mockito的thenCallRealMethod,不调用公共方法

时间:2019-01-11 09:31:46

标签: java junit mockito

我正在尝试在测试类中调用real方法。 映射器类中有两种方法,一种是public void m2(),另一种是private void m3()。 但是这里只有私有方法得到执行,而公共方法没有得到调用。 示例代码就像。

public class Service {

    @Autowired
    Mapper mapper;

    public void m1(String s){
        System.out.println(s);
        mapper.m1(s);
    }
}

public class Mapper {

    public String m1(String s){
        System.out.println("inside m1 method" +s);
        m2();
        m3();
        return s;
    }

    public void m2(){
        System.out.println("inside m2 public method");
    }

    private void m3(){
        System.out.println("insid m3 private method");
    }
}

@RunWith(MockitoJUnitRunner.class)
public class Testing {

    @Mock
    Mapper mapper;

    @InjectMocks
    Service service;


    @Test
    public void test(){
    when(mapper.m1(Mockito.any(String.class))).thenCallRealMethod();

    service.m1("Check");
    }

    /**
     * @param m1
     */

}

1 个答案:

答案 0 :(得分:1)

未调用公共方法,因为您不指示模拟这样做。

之所以调用私有方法是因为嘲笑不会影响私有方法(您必须召唤PowerMock的黑魔法来这样做)。