我正在从事一个项目,该项目有很多未包含在测试中的遗留代码。
有什么方法可以设置集成服务器来检查所有新提交是否都进行了最少数量的测试(例如,覆盖率 >70%)?
基本上,我看到两个选项:
- 以某种方式设置 CI 服务器,使其在提交的更改未包含在单元测试中时导致构建失败。这将确保每一段新代码都有测试,并且遗留代码的测试会随着每次更改而增加。
- 为整个项目设置覆盖率阈值,如果覆盖率百分比在提交后下降,则构建失败。这样做的问题是,如果我删除一个包含 100 条指令的类并添加一个包含 50 条指令的新类,覆盖率将会上升,而无需我编写任何测试。
我更喜欢选项 1,因为它强制对遗留代码的更改进行单元测试。这应该会增加整体测试覆盖率。
现在我们使用 Jenkins 作为我们的 CI 服务器,使用 JaCoCo 进行测试覆盖。 Maven 用于构建项目,SVN 是我们的主要源代码控制。
最佳答案
我知道您可以配置 Jenkins 以验证至少有一个测试文件作为提交的一部分。这并不能确保良好的测试覆盖率,但至少您会知道存在某种与测试相关的更改。
关于java - 持续集成 : ensure new commits are covered with tests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15795390/