在阅读本网站上关于该主题的几个主题后,我得出以下结论:
要测试私有方法,有两个选择:
使用PrivateObject但是在进行大量测试时,VStudio 2012的测试工具很糟糕,建议使用NUnit但是PrivateObject使用的命名空间与NUnit for Asserts的命名空间相冲突,因此,应该避免使用.
转换受保护成员(属性+方法)中的所有私有成员,并使包装类继承测试的类并通过公共方法调用受保护的方法.
第二个选择是有效的但是在我看来,由于测试驱动的原因而打破OO封装非常尴尬.
我不是要讨论是否应该测试私有方法(在其他线程中已经讨论过),或者使用其他工具,或者保护VStudio(idem).
我宁愿听到你关于牺牲OO原则而不是可测试性的意见.
谢谢.
我无法理解为什么要测试私有方法.在我最诚实的意见中,你不应该仅仅为了测试私有方法而违反你的OO原则.为什么?因为您可能会破坏某些功能/体系结构或更糟糕,通过增加您应该是私有方法的可见性来危害安全性.
只有暴露的API(公共)才应进行单元测试.因为这些方法是唯一可以在任何地方访问的方法.这些公共方法使用私有的东西.这些方法代表您的业务流程API.因此,仅测试公共方法是有意义的,因为这些方法将是外部可以访问的方法.
同样,在测试公共方法/公开API时,公共方法最有可能使用的私有方法应该已经在单元测试范围内.
我至少在OO范式的角度讲.当然,有些论点认为单元测试更适合于程序/模块化范例,因为单元测试通过其纯粹的定义来测试系统的每个单元.
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |