alibaba / testable-mock

换种思路写Mock,让单元测试更简单
https://alibaba.github.io/testable-mock/
MIT License
1.83k stars 310 forks source link

被测试类存在继承父类,mock的时候无法mock继承父类方法 #242

Closed qijy closed 2 years ago

qijy commented 3 years ago

被测试类 class ServiceA extend AbstractServiceA { public void get() { ..... super.put(SaInput); .... } } 父类: class AbstractServiceA { public void put(T input) { ..... .... } }

测试类 class ServiceATest { private ServiceA sa = new ServiceA(); public static class Mock { @MockMethod(targetClass = AbstractServiceA.class, targetMethod="put") public Object put(SaInput input) { return obj; } }

@Test public void test_s() { sa.get(); // 此时调用到sa的get方法里的put方法时,不会进入mock跳过,请问怎么处理?是否支持这样的调用方法? // 使用版本0.6.10 } }

linfan commented 2 years ago

代码里被Mock的方法原型是void put(T input),但Mock方法定义的原型是Object put(SaInput input),不确定是否与这个问题有关。

我用上述代码做了测试,同时将put方法原型统一改为Object put(Object input)(模板类型T在定义Mock方法的时候用模板类T,也可以用Object代替),验证Mock是能够正常生效的。

qijy commented 2 years ago

我这边再尝试一下