testable-mock
testable-mock copied to clipboard
间接mock静态方法失效
版本:0.6.7
//// 类A
public class MethodA {
public String handle () {
return UtilB.getInfo("aaa");
}
}
//// 类B
public class UtilB {
public static String getInfo (String url) {
return url + InnerUtilC.rawInfo();
}
}
//// 类C
public class InnerUtilC {
public static String rawInfo () {
return "RAW";
}
}
//// 测试方法
public class MethodATest {
private MethodA methodA = new MethodA();
@Test
public void handle() {
System.out.println(methodA.handle());;
}
}
//// mock类,和MethodATest在同个包下
public class MethodAMock {
@MockMethod(targetClass = InnerUtilC.class)
public static String rawInfo () {
return "mock raw";
}
}
问题描述:类A调用类B的静态方法,类B的静态方法实际调用类C的方法,但mock类C的静态方法时,并没有生效
预期结果:打印-> aaa mock raw 实际结果:打印-> aaaRaw
对InnerUtilC.rawInfo()
方法的调用发生在UtilB
类型中,因此需要在相应的UtilBMock
类里创建Mock方法,MethodAMock
类型的Mock定义不会生效
对
InnerUtilC.rawInfo()
方法的调用发生在UtilB
类型中,因此需要在相应的UtilBMock
类里创建Mock方法,MethodAMock
类型的Mock定义不会生效
了解。而且UtilBMock的package还得保证和原始类一致才行。
这样的设计的用意是不是推荐用户:mock被测试类UtilB的成员方法,或者被测试类UtilB直接调用的方法。而不是去mock更加深层的方法。如果是的话,这里有什么原因吗?
这个设计初衷是让每个类的开发者自己提供当前类内部的Mock调用,形成每个业务类对应一个单元测试类+一个单元Mock类的结构,这种Mock方式确实也是利弊各半,需要一定适应
这个设计初衷是让每个类的开发者自己提供当前类内部的Mock调用,形成每个业务类对应一个单元测试类+一个单元Mock类的结构,这种Mock方式确实也是利弊各半,需要一定适应
明白,谢谢答复