我正在尝试在测试类中调用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
*/
}
答案 0 :(得分:1)
未调用公共方法,因为您不指示模拟这样做。
之所以调用私有方法是因为嘲笑不会影响私有方法(您必须召唤PowerMock的黑魔法来这样做)。