我正在开发一个项目,其中包含大量未覆盖测试的遗留代码。持续集成:确保新的提交已通过测试
有没有办法,我就可以建立,整合服务器检查所有新提交过测试(比如,覆盖率> 70%)的最小量什么办法?
从本质上讲,我看到两个选项:
- 莫名其妙定置了CI服务器时未覆盖的单元测试的承诺变为构建失败。这将确保每个新代码都有测试,并且每次更改都会增加对旧代码的测试。
- 设置整个项目的覆盖阈值,如果覆盖百分比在提交后降低,则生成失败。问题是,如果我删除一个包含100条指令的类,并添加一个包含50条指令的新类,那么覆盖百分比就会升高,而无需编写任何测试。
我更喜欢选项1,因为它强制更改遗留代码以进行单元测试。这应该会增加整体测试覆盖率。
现在我们使用Jenkins作为CI服务器,JaCoCo使用测试覆盖率。 Maven用于构建项目,SVN是我们的主要源代码控制。
请记住,100%的覆盖率不一定是可能的,甚至不需要。覆盖范围数字也可以被操纵。为测试类写单元测试可能会人为地夸大测试覆盖率。 – 2013-04-03 18:51:06
@MikeRylander我知道,我甚至不梦想在这个项目上100%的覆盖率。但我仍然认为,迫使新的变化至少有一些报道是好的。 – 2013-04-03 18:54:41
我目前正在解决这个问题,主要解决@MikeRylanders的评论。现在http://pitest.org与版本控制集成在一起。下一个版本将允许通过scm状态分析文件。以下版本将允许按日期范围或提交进行分析,这将允许构建服务器检查修改的代码是否满足给定的变异分数。 – henry 2013-04-19 16:13:30