java - 持续集成 : ensure new commits are covered with tests

标签 java jenkins continuous-integration code-coverage jacoco

我正在从事一个项目,该项目有很多未包含在测试中的遗留代码。

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

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

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

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

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

最佳答案

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

关于java - 持续集成 : ensure new commits are covered with tests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15795390/

相关文章:

java - 更改 SOAP 服务 (JAX-WS/METRO) 中的 Bean 表示

ios - UITesting的iOS模拟器位置

jenkins - 如何将 jenkins 管道中的 Jenkins 配置文件复制到 Web 服务器

android - gradle无法在远程jenkins服务器上构建Android项目

continuous-integration - 如果注释发生更改,则阻止 TeamCity 构建

ruby - 如何自动运行 Ruby 测试?

java - 从另一个 bean 中调用 Controller 。未找到线程绑定(bind)请求

java - 用于 Java/Swing 的基于模板的编辑器组件?

java - 尝试通过在子类中扩展类来向类添加方法?

java - Jenkins - 'mvn' 未被识别为内部或外部命令、可操作程序或批处理文件