我正在开发一个项目,该项目包含大量未包含在测试中的遗留代码。
有什么方法可以设置集成服务器来检查所有新提交是否具有最少的测试量(例如,覆盖率> 70%)?
本质上,我看到两个选项:
- 当提交的更改未包含在单元测试中时,以某种方式设置 CI 服务器以使构建失败。这将确保每段新代码都有测试,并且旧代码的测试将随着每次更改而增加。
- 为整个项目设置覆盖阈值,如果在提交后覆盖百分比降低,则构建失败。这样做的问题是,如果我删除一个包含 100 条指令的类并添加一个包含 50 条指令的新类,那么覆盖率将上升而无需我编写任何测试。
我更喜欢选项 1,因为它强制对遗留代码的更改进行单元测试。这应该会增加整体测试覆盖率。
现在我们使用 Jenkins 作为我们的 CI 服务器和 JaCoCo 进行测试覆盖。Maven 用于构建项目,SVN 是我们的主要源代码控制。