What are the first tasks for implementing Unit Testing in Brownfield Applications?
您是否首先重构SQL? 您的建筑? 还是你的代码库? 我正在将单元测试添加到大型的传统意大利面条代码库中。 我的方法是,当被要求解决问题时,我尝试围绕与当前任务相关的部分代码库创建一个新包装器。这个新的包装器是使用TTD开发的(首先编写测试)。有时会调用未经单元测试的旧代码。在其他时候,我会为现有模块制作一个新副本,并开始对其进行严重的破坏。有时我会从头开始重写功能。 但是,由于我对其进行了相当良好的测试,因此我感到可以控制。 我发现此代码库是经过大量复制和粘贴而开发的,一旦我理解了某个特定部分,并从中提取了一些功能(首先进行测试)...函数通常在许多其他地方都可用,因此用我自己的,经过单元测试的库替换旧代码的比率增加了。 我没有(也没有权限)尝试重写代码或将测试添加到当前问题未解决的部分代码(通常是我要修复的错误),但是我确实具有相当积极的主动态度触及任何可能相关的事物。 更新:Penguinix问:"您使用哪种语言?您建议使用特定的测试工具吗?" 现在我在……呃……腮腺炎!但是,同样的原理在任何地方都适用。 MinUnit改变了我对UT的理解:http://www.jera.com/techinfo/jtns/jtn002.html 当我看到MinUnit时,这对我来说是一个"禅"的时刻。它消除了我对单元测试的误解,因为单元测试是一个复杂的事情,需要复杂的OO框架等。我了解到UT只是在编写大量测试。您可以在3分钟内用自己喜欢的任何语言编写自己的"线束"。只是去做。 这确实取决于代码库的状态...是否有大量类?一类的大方法?这些课程紧密结合吗?配置是负担吗? 考虑到这一点,我建议阅读"有效使用旧版代码",找出问题并应用建议。 |