Mic*_*l W 1 testing tdd junit unit-testing
我被要求带一个旧的基于Java的应用程序更新,并内联我已经工作的更多当前应用程序.
我们想要介绍的一件事是测试驱动开发,用于任何新的增强功能.
代码单元测试覆盖率目前非常低<20%
作为应用程序的新手,我希望这个百分比要大得多,让我有信心在不引入缺陷的情况下进行更改.
问题是要提高这个百分比,很多代码需要重新分解才能测试.
因此,如此低的单元测试覆盖率进行重新分解可能会引入问题,但为了获得测试覆盖率,您必须重新考虑因素?!
无论如何都要降低尝试这样做的风险?
低风险的方法是测试和重构是非常小的增量.你必须在修改任何东西之前引入尽可能多的测试(并不总是那么容易),然后继续这个过程,但包括重构.
如果你保持初始重构以将自包含的代码块提取到小的自包含方法中那么风险很低(不是没有风险,但是很低),然后你可以尽可能地测试原始方法,但另外测试提取的方法彻底.
模拟也有很大帮助 - 你可以通过模拟而不是真正的服务等,这有助于提供很多帮助.您仍然会遇到麻烦的情况,其中代码在内部实例化/调用您不想测试的服务,但随着时间的推移,您还可以通过引入依赖注入来解决这个问题(这样您就可以注入模拟而不是实际服务) .但这可能是一个长期战略.
我过去这样做的方式是务实 - 最初似乎是不可克服的,但是如果你经常反复地做上述事情,你最终会得到代码,你不再"害怕".这需要时间,但可以做到.
我可以彻底推荐Michael Feather的遗留代码处理这类事情 - 它提供了许多实用的策略来处理你(我们在某些时候都经历过)的问题
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |