【发布时间】:2011-06-12 12:13:45
【问题描述】:
我有一个带有受保护方法的密封类,我想测试其行为。这使得很难直接测试,也很难模拟。
它位于不是以 TDD 方式开发的代码库中,我现在正在为特定功能添加单元测试。
在这种情况下,可能的一般方法是什么?目前我有:
- 解封类。 然后在我们的测试代码中创建一个派生自该类的代理或适配器,以隧道访问受保护的方法。
- 将受保护方法中的行为分解为委托/函子,然后重新注入。 然后独立地测试被分解的行为。
- 通过调用继承层次结构中使用受保护方法的最接近的公共方法进行测试。 当被测代码以外的代码发生变化时,可能会导致大量嘲笑,并暴露在风险之中——创建脆弱的测试。
- 使用反射来访问受保护的方法。 那就直接调用吧。
还有吗?
【问题讨论】:
标签: c# unit-testing protected sealed