java – 测试私有变量 – 总是不好的做法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 测试私有变量 – 总是不好的做法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1458字,纯文字阅读大概需要3分钟。
内容图文
为了给出一些背景知识,我已经学习了大约10个月的java,所以我真的没那么有经验.我最近读过一些关于如何测试私有方法和变量的不良做法.
在完美的世界中,你不应该这样做,因为它暗示了糟糕的设计 – 但是,我正在使用遗留框架,其中大多数方法都是通过反射来调用的,这是糟糕的设计,但无论如何我都无法改变它.请不要回复说“你应该重新设计代码”,因为我无法改变框架的工作方式.
我想测试一个’flow’类以某种方式运行并根据私有变量的状态调用正确的方法,我想确保某些方法将私有实例变量设置为正确的值,如果另一个私有变量有一定的价值.当我将来对类进行更改时,我就可以确保类的流/行为没有被破坏或改变.
现在,因为流程主要基于私有实例变量的状态,并且因为测试私有实例变量的状态不好 – 我怎么测试类?
测试所有工作的私有变量的方法:
>在代码末尾实现默认访问getter和setter,并将junit测试类放在同一个包中.清楚地评论它们应该仅用于测试.
>使实例变量默认访问而不是私有,并将junit测试类放在同一个包中.无论如何,同一个包中的其他类都不会实例化此类.
>通过反射测试私有变量 – 我失去了IDE功能,因为如果我更改变量的名称Eclipse将不会重构,并且可能是将来手动更改字符串以匹配要测试的类中的变量名称的痛苦.
上面三个中的哪一个是“较小的”邪恶使用?是否更好地测试私有变量然后根本没有测试?
解决方法:
私有领域的状态与班级的正确运作无关.你不应该测试私有变量.
测试类的功能,而不是它是如何做的.
如果要测试类是否正确设置其内部状态,那么它在此之后以特定方式运行,然后调用设置状态的方法并测试之后的行为是否正确.
如果需要1000次测试来确保它们无关紧要 – 它们只是单元测试,所以它们会很快.
未来的程序员可以自由地改变班级的内部运作,只要该班级的合同得到维护.
内容总结
以上是互联网集市为您收集整理的java – 测试私有变量 – 总是不好的做法?全部内容,希望文章能够帮你解决java – 测试私有变量 – 总是不好的做法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。