【发布时间】:2013-02-26 14:46:06
【问题描述】:
我被要求更新一个基于 Java 的旧应用程序,并与我正在开发的更多当前应用程序内联。
我们想介绍的一件事是测试驱动开发,用于任何新的增强功能。
代码单元测试覆盖率目前非常低
作为应用程序的新手,我希望这个百分比更大,以便让我有信心在不引入缺陷的情况下进行更改。
问题是要提高这个百分比,很多代码需要重构才能测试。
因此,使用如此低的单元测试覆盖率进行重构可能会带来问题,但要提高测试覆盖率,您必须重构吗?!
在尝试这样做时是否有降低风险的方法?
【问题讨论】:
-
出于兴趣,您如何计算您的覆盖率?私有方法应该通过范围更广(公共/受保护)的方法进行间接测试——它们不需要自己的测试......
-
是的,我同意。覆盖统计数据来自声纳。我还为 Eclipse 使用了 EclEmma 插件。谢谢
-
那么您是纯粹为了增加覆盖率而进行重构,还是这是一个单独的活动(使其与当前应用程序保持一致)?
-
纯粹为了测试覆盖
-
提高测试覆盖率肯定是一个值得的目标吗?并且使用 TDD 进行新的增强是有意义的 - 这当然是我尝试工作的方式(但同样,现有代码的状态最初可能会或可能不会适合 TDD)。此外,提高代码覆盖率可以提高对应用程序的理解,这反过来意味着在添加新增强功能时破坏某些东西的可能性远低于没有/不重构/添加测试的情况。
标签: unit-testing testing junit tdd