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