为Sonar添加jacoco集成测试覆盖率

背景:我有2个独立的Java项目,称它们为A和B.项目A是实际产品(战争应用程序),带有单元测试。 Gradle构建项目,然后运行声纳分析,我可以看到Sonar中的单元测试覆盖率。 项目B是第一个项目的集成测试。 它由Jenkins在构建项目A并将其部署到集成环境后进行管道运行。 部署还涉及对代码进行测试,以便jacoco-it报告将与项目A的类相关联。

我的问题:如何将项目A的声纳页添加到目前仅有单元测试覆盖率,集成测试覆盖率的第二步?

我需要的流程是:

  • 建立项目A
  • 对项目A运行声纳分析(现在它将在其声纳页面上显示单元测试覆盖率)
  • 建立项目B
  • 对项目B进行声纳分析 - 这将简单地增加对声纳项目A的整合覆盖
  • 目前它不工作。 当我在项目B上运行声纳分析时,它会弄乱项目A的声纳页面,取消A的单元测试覆盖率。

    现在我正在工作的流程,但我想改变的是:

  • 建立项目A
  • 对项目A进行声纳分析
  • 建立项目B
  • 在项目B上运行jacoco报告。这会将jacoco-it.exec文件输出到我的磁盘上的特定位置
  • 对项目A运行声纳分析(它具有从指定位置获取jacoco-it.exec文件的设置
  • 现在项目A的声纳页面将显示单元测试和集成测试覆盖率,但第5步完全是多余的,我想避免它。
  • 有什么建议么?


    我会建议的是有点不同:

  • 采用一些构建自动化工具
  • 创造一个声纳'检查员'的工作,这并没有做全面的分析; 只是增量,当添加质量闸门断路器问题时,这应该会中断
  • 为您的A项目创建-Dsonar.analysis.mode=analysis并进行全面分析: -Dsonar.analysis.mode=analysis (注意:我的经验表明,在这种情况下,您必须在此分析之前运行增量,因为在分析模式中,声纳接受新的质量门限断路器问题
  • 我不认为集成测试应该计入项目测试的覆盖范围,因此可能会被忽略。

  • 你不能修改以前的分析,这就是为什么你的'B'工作似乎取代了单元测试数字。 您需要做的是在分析之前生成集成测试覆盖率报告,并使该报告可用,以便可以在同一分析中读取单元测试和集成测试编号。

    从构建管道的角度来看,这可能会变得棘手,这取决于您需要如何构建作业,但副作用听起来像需要3个作业:

  • 建立项目A
  • 建立项目B并生成综合测试报告
  • 作业3从作业2中提取集成测试报告,并重新构建项目A或从作业1中提取代码,类和单元测试报告并执行分析
  • 链接地址: http://www.djcxy.com/p/59907.html

    上一篇: Adding jacoco integration tests coverage for Sonar

    下一篇: Running code coverage with Cobertura and Jacoco