Closed bingyangJavaLearning closed 1 year ago
目前的@MockInvoke
确实表达不了对私有内部类方法的引用,需要对语法稍微扩展一下。
计划增加@MockInvoke(targetMethod = "com.alibaba.demo.basic.DemoInnerClass.Inner::demo")
这种表达方式,通过包含类路径的完整方法名来引用私有内部类的方法。
预计在下个小版本里就能支持。
已发布v0.7.9
版本通过@MockInvoke
注解新增的targetClassName
属性支持引用私有内部类,注意内部类和外部类名中间需要用"$"符号(而不是在Java代码里使用的"."符号)。比如外部类是com.demo.OuterClass
和InnerClass
,则参数值为targetClassName = "com.demo.OuterClass$InnerClass"
。
"$"是在字节码里分隔内部类的表示方式,由于从Java类路径转换到字节码类路径比较繁琐,这里暂时保留原始的字节码路径,未来在大版本更新(如0.8.0
或1.0.0
版本)的时候可能会调整。
请问一下私有内部类如何mock? demo中DemoInnerClass里的内部类是public的。修改为private就不能在Mock容器中指定targetClass了。这种情况怎么mock呢? 例如如下代码,如何mock内部类Inner里的demo方法: public class DemoInnerClass { private class Inner { /**