Martin的"Clean Code“中关于TDD的章节激发了我的想象力。
然而。
这些天,我主要是扩展或修复现有的大型应用程序。
另一方面,TDD似乎只适用于从头开始的写作。
谈论这些现有的大型应用程序:
我没有看到任何关于TDD "bootstrap“到大型monolite现有应用程序中的提及。
问题是,这些应用程序中的大多数类原则上只能在应用程序内部运行。
它们是不可分离的。它们不是通用的。只是为了启动它们,你至少需要整个应用程序的一半。万物皆与万物相连。
那么,引导程序在哪里呢?
或者有另一种技术可以处理TDD的结果
这是否适用于扩展不是使用TDD开发的现有应用程序?
发布于 2011-06-07 19:29:48
bootstrap用于隔离您正在处理的区域,并为您想要保留的行为和想要添加的行为添加测试。当然,困难的部分是使其成为可能,因为未测试的代码往往纠缠在一起,使得难以隔离代码区域以使其可测试。
购买Working Effectively with Legacy Code,它提供了大量的指导,告诉你如何准确地完成你的目标。
您可能还想看看这个相关问题的答案,Adding unit tests to legacy code。
发布于 2011-06-07 18:43:56
从小事做起。抓取一段可以合理提取并转换为可测试类的代码,然后这样做。如果应用程序充满了如此多的硬依赖和可怕的意大利面逻辑,以至于你不可能在不担心破坏某些东西的情况下重构,那么就从做一堆集成测试开始,这样你就可以在开始摆弄它之前/之后确认正确的行为。
发布于 2011-06-07 18:44:53
您现有的应用程序听起来像是受到紧密耦合和大量技术债务的困扰。在这样的情况下,您可以花费大量时间尝试编写全面的单元测试,以便更好地将时间花在主要的重构上,特别是促进松散耦合。
在其他情况下,将时间和精力投入到使用模拟框架进行单元测试可能是有益的,因为它有助于将应用程序解耦以进行测试,从而使测试单个组件成为可能。依赖注入技术可以与mocking结合使用,以帮助实现这一点。
https://stackoverflow.com/questions/6264007
复制相似问题