如何测试私有函数或具有私有方法,字段或内部类的类?

如何测试私有函数或具有私有方法,字段或内部类的类?,第1张

如何测试私有函数或具有私有方法字段或内部类的类?

更新:

大约十年后,测试私有方法或任何无法访问的成员的最佳方法可能是

@Jailbreak
来自Manifold框架。

@Jailbreak Foo foo = new Foo();// Direct, *type-safe* access to *all* foo's membersfoo.privateMethod(x, y, z);foo.privateField = value;

这样,您的代码将保持类型安全和可读性。没有设计折衷,也没有为了测试而过度曝光的方法和字段。

如果您使用的是旧版Java应用程序,并且不允许更改方法的可见性,那么测试私有方法的最佳方法是使用反射。

在内部,我们使用助手来获取/设置

private
private static
变量以及调用
private
private static
方法。以下模式将使您几乎可以执行与私有方法和字段相关的所有 *** 作。当然,您
private static final
不能通过反射更改变量。

Method method = TargetClass.getDeclaredMethod(methodName, argClasses);method.setAccessible(true);return method.invoke(targetObject, argObjects);

对于字段:

Field field = TargetClass.getDeclaredField(fieldName);field.setAccessible(true);field.set(object, value);

注意:
1.

TargetClass.getDeclaredMethod(methodName, argClasses)
让您研究private方法。同样的事情也适用
getDeclaredField。2.setAccessible(true)
必须与私人玩耍。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5003471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存