我觉得自己对TDD相当熟练,甚至在公司里被认为是“TDD专家”,但尽管如此,还是有一些情况我觉得不知道如何正确处理,所以我想听听别人的意见。
我的问题如下:
尽管一般来说 TDD 帮助我思考类的核心职责,并将所有其他职责提取到依赖类中,但有些情况下,在一段时间后我意识到其中一个类具有多重职责,需要重构和拆分它分为2个班级。这个结论通常是因为该类的测试开始变得复杂或重复。我可以很容易地进行重构,将此类拆分为我想要的设计(并且我以小步骤进行,保持绿色栏)。我的问题是,我最终得到了同样复杂且重复的测试,现在一起测试这两个类,而我想对每个类进行单独的测试。
我能想到的唯一(或多或少安全)的方式是对每个测试执行以下操作(在我完成生产代码的重构之后):
- 复制测试用例
- 将测试的一个副本更改为使用模拟而不是第一个类,并将测试的另一个副本更改为使用模拟而不是第二个类。
- 然后,如果我发现其中一个副本已存在相同的测试,我会将其删除。
我认为有时可以执行以下操作:
- 首先从头开始创建 2 个类(当然使用 TDD)
- 更改旧测试以使用新类而不是旧类
- 删除旧类
- 删除旧的测试
这两种技术看起来都相当麻烦和耗时,所以我想知道:“真正的专家”是如何解决这个问题的?
没有实际的例子,我无法确定我到底知道你的意思。但听起来您试图单独测试每个类(甚至可能是每个方法)。
当我想要/必须将一个类拆分为多个类时,我仍然倾向于将生成的类集合视为一个单元并将其作为一个整体进行测试。只有当它们停止构建功能整体并开始成为独立单元时,我才会对它们进行相互独立的测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)