我正尝试在我的测试类中调用真正的方法。在mapper类中有两个方法,一个是公共的void m2(),另一个是私有的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
*/
}发布于 2019-01-11 17:36:30
公共方法不会被调用,因为您没有指示mock这样做。
之所以调用私有方法,是因为mockito不影响私有方法(您必须调用PowerMock的黑魔法才能做到这一点)。
https://stackoverflow.com/questions/54143693
复制相似问题