栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

更新:

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

@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)
必须与私人玩耍。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/398377.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号