持续集成:确保新的提交包含在测试中

Den*_*sca 14 java continuous-integration code-coverage jenkins jacoco

我正在开发一个项目,其中包含许多未包含在测试中的遗留代码.

有什么办法可以设置集成服务器来检查所有新提交是否都有最少量的测试(例如,覆盖率> 70%)?

基本上,我看到两个选项:

  1. 如果单元测试未涵盖已提交的更改,则会以某种方式将CI服务器设置为使构建失败.这将确保每个新代码都有测试,并且遗留代码的测试将随着每次更改而增加.
  2. 设置整个项目的覆盖阈值,如果提交后覆盖百分比减少,则构建失败.这样做的问题是,如果我删除一个包含100条指令的类并添加一个包含50条指令的新类,则覆盖百分比将会上升而不会编写任何测试.

我更喜欢选项1,因为它强制遗留代码中的更改进行单元测试.这应该会增加整体测试覆盖率.

现在我们使用Jenkins作为我们的CI服务器,使用JaCoCo作为测试覆盖.Maven用于构建项目,SVN是我们的主要源代码控制.

Mik*_*der 1

我知道您可以配置 Jenkins 来验证至少有一个测试文件作为提交的一部分。这并不能保证良好的测试覆盖率,但至少您会知道存在某种与测试相关的更改。