在阅读了这个网站上关于这个主题的几个主题之后,我得出了以下结论:
要测试私有方法,有两种选择:
使用 PrivateObject,但 VStudio 2012 的测试工具在进行大量测试时很糟糕,建议使用 NUnit。但是 PrivateObject 使用的命名空间与 NUnit for Asserts 的命名空间发生冲突,因此应避免使用。
将所有私有成员转换为受保护成员(属性+方法),使一个包装类继承被测类,并通过公有方法调用受保护方法。
第二种选择有效,但在我看来,出于测试驱动的原因打破 OO 封装非常尴尬。
我不是要讨论是否应该测试私有方法(在其他线程中已经讨论过这一点),或者使用其他工具,或者为 VStudio 辩护(同上)。
我宁愿听听您关于牺牲 OO 原则而不是可测试性的评论。
谢谢你。