公开私有方法以进行单元测试...好主意?
主持人注意:这里已经发布了39个答案(有些已被删除)。在发布答案之前,请考虑是否可以在讨论中添加一些有意义的内容。你很可能只是在重复别人已经说过的话。
我偶尔会发现自己需要公开类中的私有方法,以便为它编写一些单元测试。
通常,这是因为该方法包含类中其他方法之间共享的逻辑,并且单独测试逻辑会更整洁,或者另一个原因可能是我想测试同步线程中使用的逻辑,而不必担心线程问题。
其他人会发现自己这样做,因为我真的不喜欢这样做吗?我个人认为奖金超过了公开一种方法的问题,这种方法并没有真正提供课堂以外的任何服务......
更新
感谢大家的回答,似乎激起了人们的兴趣。我认为普遍的共识是测试应该通过公共API进行,因为这是使用类的唯一方式,我确实同意这一点。我上面提到的几个案例,我会在上面这样做,这些都是不常见的案例,我认为这样做的好处是值得的。
然而,我可以看到每个人都指出,它永远不应该真正发生。当仔细考虑这个问题时,我认为更改代码以适应测试是一个坏主意 - 毕竟我认为测试在某种程度上是一种支持工具,如果你愿意的话,将系统更改为“支持支持工具”,这是公然的坏做法。