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

时间:2015-10-18 15:23:40

标签: java gradle sonarqube integration-testing jacoco

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

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

我需要的流程是:

  1. 构建项目A
  2. 对项目A进行声纳分析(现在它将在声纳页面上显示单元测试覆盖率)
  3. 构建项目B
  4. 对项目B进行声纳分析 - 只需在声纳
  5. 上为项目A添加集成覆盖

    目前无效。当我对项目B进行声纳分析时,它会弄乱项目A的声纳页面,删除A的单位测试覆盖率。

    我现在拥有的流量,但我想改变的是:

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

2 个答案:

答案 0 :(得分:0)

我的建议有点不同:

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

答案 1 :(得分:0)

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

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

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