你先重构SQL吗?你的建筑?还是你的代码库?你改变语言吗?你扔掉所有东西并从头开始吗?[不重构]
我正在将一个单元测试添加到一个大型的传统意大利面条代码库中.
我的方法是,当被要求解决问题时,我尝试围绕与我当前任务相关的代码库部分创建一个新的包装器.这个新的包装器是使用TTD开发的(首先编写测试).有的打电话时间到非单元测试的遗留代码.在其他时候,我制作一个现有模块的新副本,并开始对其进行严重的暴力.有时我从头开始重写功能.
但是,由于我保持相当好的测试,我感觉非常可控.
我发现这个代码库,它是用过多的复制和粘贴开发的,一旦我理解了一个特定的部分,并从中提取了一些函数(这些都是先测试完成的)......这些函数通常可以在许多其他地方使用,因此用我自己的单元测试库替换遗留代码的速度会增加.
我没有(并且没有权限)尝试重写或添加测试到我当前问题未触及的部分代码(通常是我试图解决的错误)但我确实有一个相当积极的主动态度任何被触及并可能相关的东西.
更新:Penguinix问:"你使用哪种语言?你推荐哪种特定的测试工具?"
现在我正在......呃......腮腺炎!但同样的原则适用于任何地方.
改变我对UT的理解的是MinUnit:http://www.jera.com/techinfo/jtns/jtn002.html
当我看到MinUnit时,这对我来说是一个"禅"的启蒙时刻.它消除了我对单元测试的误解,这些误解需要复杂的OO框架等.我明白UT只是在编写一堆测试.您可以用自己喜欢的任何语言在3分钟左右自己编写"线束".继续吧,做吧.