感觉自己对TDD很熟练,甚至被我公司认为是“TDD专家”,不过还是有一些情况我觉得不知道怎么处理好,想听听其他人的意见.
我的问题如下:尽管总体上 TDD 帮助我思考一个类的核心职责,并将所有其他职责提取到依赖类,但在某些情况下,一段时间后我意识到其中一个类有多个职责,并且它需要重构并将其拆分为 2 个类。这个结论通常是因为该类的测试开始变得复杂或重复。我可以很容易地进行重构,将这个类拆分为我想要的设计(我分小步进行,保持在绿色栏上)。我的问题是我最终得到了现在一起测试两个类的同样复杂和重复的测试,而我想对每个类进行单独的测试。我能想到的唯一(或多或少安全)的方式,
- 复制测试用例
- 将测试的一个副本更改为使用模拟而不是第一类,并将测试的另一个副本更改为使用模拟而不是第二类。
- 然后,如果我发现其中一个副本已经存在相同的测试,我将其删除。
我认为有时可以执行以下操作:
- 首先从头开始创建 2 个类(当然使用 TDD)
- 更改旧测试以使用新类而不是旧类
- 删除旧类
- 删除旧测试
这两种技术看起来都非常麻烦和耗时,所以我想知道:“真正的专家”如何解决这个问题?