Java 为声纳添加jacoco集成测试覆盖范围

Java 为声纳添加jacoco集成测试覆盖范围,java,gradle,sonarqube,integration-testing,jacoco,Java,Gradle,Sonarqube,Integration Testing,Jacoco,背景: 我有两个独立的java项目,分别称为A和B。 项目A是带有单元测试的实际产品(war应用程序)。Gradle构建了这个项目,然后运行sonar分析,我可以看到sonar中的单元测试覆盖率。 项目B是第一个项目的集成测试。在构建项目a并将其部署到集成环境之后,Jenkins在管道中运行它。部署还涉及检测代码,以便jacocoit报告与项目A的类相关联 我的问题: 作为第二步,我如何添加到ProjectA的sonar页面,该页面目前只有单元测试覆盖,集成测试覆盖 我需要的流程是: 建设项目A

背景: 我有两个独立的java项目,分别称为A和B。 项目A是带有单元测试的实际产品(war应用程序)。Gradle构建了这个项目,然后运行sonar分析,我可以看到sonar中的单元测试覆盖率。 项目B是第一个项目的集成测试。在构建项目a并将其部署到集成环境之后,Jenkins在管道中运行它。部署还涉及检测代码,以便jacocoit报告与项目A的类相关联

我的问题: 作为第二步,我如何添加到ProjectA的sonar页面,该页面目前只有单元测试覆盖,集成测试覆盖

我需要的流程是:

  • 建设项目A
  • 在项目A上运行sonar分析(现在它将在sonar页面上显示单元测试覆盖范围)
  • 建设项目B
  • 在项目B上运行sonar分析-这将简单地为sonar上的项目A添加集成覆盖
  • 它目前不工作。当我在项目B上运行sonar分析时,它弄乱了项目A的sonar页面,删除了A的单元测试覆盖范围

    我现在拥有的流程正在运行,但我想改变的是:

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

  • 有什么建议吗?

    我的建议有点不同:

    • 使用一些构建自动化工具
    • 创建一个声纳“检查器”作业,它不进行全面分析;只是增量,当添加质量门断路器问题时,这应该会中断
    • 通过全面分析为您的a项目创建夜间作业:
      -Dsonar.analysis.mode=analysis
      (注意:我的经验表明,在这种情况下,您必须在分析之前运行增量作业,因为在分析模式下,sonar接受新的质量闸门断路器问题
    • 我认为集成测试不应该计入项目测试覆盖率,所以这可能被忽略了

    您无法修改以前的分析,这就是为什么您的“B”作业似乎会替换单元测试编号。您需要做的是在分析之前生成集成测试覆盖率报告,并使该报告可用,以便在同一分析中读取单元测试和集成测试编号

    从构建管道的角度来看,这可能会变得很棘手,这取决于您需要如何构造作业,但乍一看,您似乎需要3个作业:

  • 建设项目A
  • 构建项目B并生成集成测试报告
  • 作业3从作业2中提取集成测试报告,或者重建项目A,或者从作业1中提取代码、类和单元测试报告并执行分析

  • 谢谢。这实际上是一个有意义的解决方案。谢谢你的回答。我更容易实现下面的解决方案