最佳答案
在 C + + 中,我经常让一个单元测试类成为我正在测试的类的朋友。我这样做是因为有时候我觉得需要为一个私有方法编写一个单元测试,或者也许我想访问一些私有成员,这样我可以更容易地设置对象的状态,以便我可以测试它。对我来说,这有助于保存封装和抽象,因为我没有修改类的公共或受保护的接口。
如果我购买一个第三方库,我不希望它的公共接口被一堆我不需要知道的公共方法污染,仅仅因为供应商想要进行单元测试!
如果我从一个类继承,我也不想担心一大堆受保护的成员,我不需要知道这些成员。
这就是为什么我说它保留了抽象和封装。
在我的新工作中,他们甚至不赞成使用朋友类进行单元测试。他们说,因为类不应该“知道”关于测试的任何事情,而且您不希望类和它的测试之间有紧密耦合。
有没有人能给我多解释一下这些原因,好让我更好地理解?我只是不明白为什么使用朋友进行单元测试是不好的。