如何测试私有函数或具有私有方法,字段或内部类的类?推荐| Java Debug 笔记
2021/5/19 22:31:53
本文主要是介绍如何测试私有函数或具有私有方法,字段或内部类的类?推荐| Java Debug 笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接
提问:一行初始化ArrayList
如何对具有内部私有方法,字段或嵌套类的类进行单元测试(使用xUnit)?还是通过内部链接(static在C / C ++中)或在私有(匿名)名称空间中使其私有化的函数?
仅仅为了能够运行测试而更改方法或函数的访问修饰符似乎很糟糕。
高分回答:
很多的知识点,真的需要写出来才会掌握!!! \color{purple}很多的知识点,真的需要写出来才会掌握!!!{~}很多的知识点,真的需要写出来才会掌握!!!
更新: 大约十年后,测试私有方法或任何无法访问的成员的最佳方法可能是@Jailbreak来自Manifold框架。 @Jailbreak Foo foo = new Foo(); // Direct, *type-safe* access to *all* foo's members foo.privateMethod(x, y, z); foo.privateField = value; 这样,您的代码将保持类型安全和可读性。没有设计折衷,也没有为了测试而过度曝光的方法和字段。 复制代码
如果您使用的是旧版Java应用程序,并且不允许更改方法的可见性,那么测试私有方法的最佳方法是使用Reflection。
在内部,我们使用助手来获取/设置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)必须与私人玩耍。
文章翻译自 am2dgbqfb6mk75jcyanzabc67y-ac4c6men2g7xr2a-stackoverflow-com.translate.goog/questions/3…
作者建议:掌握反射,用处不仅仅在于本问答!!!
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞???? 求关注❤️ 求分享???? 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️
这篇关于如何测试私有函数或具有私有方法,字段或内部类的类?推荐| Java Debug 笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南