Martin 的“Clean Code”中关于 TDD 的章节引起了我的想象。
然而。
这些天我主要是扩展或修复大型现有应用程序。
另一方面,TDD 似乎只适用于从头开始编写。
谈论这些现有的大型应用程序:
1. 他们不是用 TDD 写的(当然)。
2. 我无法重写它们。
3. 为他们编写全面的 TDD 式测试在时间范围内是不可能的。
我还没有看到在大型单体现有应用程序中提到 TDD“ bootstrap ”。
问题是这些应用程序的大多数类原则上只能在应用程序内部工作。
它们是不可分离的。它们不是通用的。只是为了启动它们,您至少需要整个应用程序的一半。一切都与一切有关。
那么, bootstrap 在哪里?
或者有 TDD 结果的替代技术
这对扩展不是用 TDD 开发的现有应用程序有用吗?
最佳答案
bootstrap 是隔离您正在处理的区域,并为要保留的行为和要添加的行为添加测试。当然,困难的部分是让它成为可能,因为未经测试的代码往往以某种方式纠缠在一起,使得很难隔离代码区域以使其可测试。
购买 Working Effectively with Legacy Code ,它提供了大量关于如何准确实现您的目标的指导。
您可能还想查看这个相关问题 Adding unit tests to legacy code 的答案。
关于TDD:可以在增强现有大型应用程序时进行引导吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6264007/