添加返回对象内部状态的函数进行单元测试是否比使测试类成为友元更好? - 特别是,当除了单元测试之外的功能没有用处时。
95% 的时间单元测试应该只测试类的公开暴露的表面。如果您正在幕后测试某些内容,那就是测试实现细节,这本质上是脆弱的,因为您应该能够轻松更改实现并仍然让测试工作。它不仅脆弱,而且您还可能会尝试测试在计划的使用场景中实际上不可能的东西,这是浪费时间。
如果你想添加的访问器的目的只是为了测试函数是否达到了预期的效果,那么你的类设计可能会违反另一个原则,即类状态机的类应该始终明确它所处的状态,如果这会影响人们与班级互动时发生的事情。在这种情况下,提供这些只读访问器是正确的。如果它不影响类的行为,请参阅我之前有关实现细节的内容。
正如您正确地说的那样,用未使用的东西弄乱班级的公共表面也是不可取的,因为其本身的原因。
If I had在您的情况下在访问器和好友之间进行选择,我会选择好友,仅仅是因为you拥有您的测试并可以在紧要关头更改它。您可能不拥有找到使用您的额外访问器的方法的小丑的代码,然后您就会陷入困境。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)