In 这个线程,布莱恩(唯一的回答者)说“你的代码应该以与测试无关的方式编写”
单个评论说“你的代码绝对不应该在全局“我正在测试标志”上分支。”。
但都没有给出理由,我会really喜欢听一些关于此事的理性想法。进入给定的应用程序类并设置一个布尔值来表示“这是一个测试,而不是运行”将非常容易(特别是考虑到许多测试对应用程序类具有包私有访问权限)。
我发现自己费尽心思(注入模拟私有字段等)来实现的各种事情都可以变得更容易完成。
同样明显的是,如果你采取得太过分,可能会造成灾难性的结果......但作为软件测试库中众多工具之一,为什么这个概念会受到如此多的谴责呢?
对米克助记符的回答:
如果您实际上在方法中间创建一个新的类实例并将其分配给私有字段,那么这可能会有所帮助的一个简单示例:私有字段模拟在这种情况下不会有帮助,因为您正在替换私有字段场地。但实际上创建一个真实的对象可能会非常昂贵:您可能希望在测试时将其替换为轻量级版本。
事实上,我昨天遇到了这种情况......我的解决方案是创建一个名为 createXXX() 的新包私有方法......这样我就可以模拟它。但这又违背了“你不应该仅仅为了适合你的测试而创建方法”的格言!
想想大众汽车的大丑闻。在测试中与在生产负载下表现不同的系统并未经过真正的测试。那就是:确实如此two系统、生产系统和测试系统——其中唯一经过测试的是测试系统。生产系统不同,未经过测试。您在两个系统之间引入的每个行为差异都是一个测试漏洞。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)