【发布时间】:2019-01-11 09:31:46
【问题描述】:
我试图在我的测试类中调用真正的方法。 有两种方法,一种是映射器类中的公共 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
*/
}
【问题讨论】:
-
首先,您有 2 个公共方法和 1 个私有方法。其次,您不会模拟第二个公共方法,这就是为什么您没有获得该方法的输出