【问题标题】:Adding jacoco integration tests coverage for Sonar为 Sonar 添加 jacoco 集成测试覆盖率
【发布时间】:2016-01-16 22:20:42
【问题描述】:

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

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

我需要的流程是:

  1. 构建项目 A
  2. 对项目 A 运行声纳分析(现在它将在其声纳页面上显示单元测试覆盖率)
  3. 构建项目 B
  4. 在项目 B 上运行声纳分析 - 这将简单地在声纳上向项目 A 添加集成覆盖

目前不工作。当我对项目 B 运行声纳分析时,它会弄乱项目 A 的声纳页面,从而删除 A 的单元测试覆盖率。

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

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

有什么建议吗?

【问题讨论】:

    标签: java gradle sonarqube integration-testing jacoco


    【解决方案1】:

    我的建议有点不同:

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

    【讨论】:

    • 感谢您的回答。我更容易实现下面的解决方案
    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢。这实际上是一个有意义的解决方案
    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2012-06-11
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2015-07-19
    相关资源
    最近更新 更多