Java Clover和Jacoco给出了不同的代码覆盖率结果

Java Clover和Jacoco给出了不同的代码覆盖率结果,java,unit-testing,code-coverage,jacoco,clover,Java,Unit Testing,Code Coverage,Jacoco,Clover,我刚刚用Clover对我的项目进行了代码覆盖率分析,结果大约是60%。我与Jacoco对同一个项目进行了分析,结果约为52%。8%的差异正常吗?我过去也曾使用这些工具运行过代码覆盖率分析,差异从来没有这么大。请注意,Clover和JaCoCo使用的代码覆盖率指标不同: Clover具有方法、声明和分支覆盖率(加上三者总和的总覆盖率指标) JaCoCo具有方法、代码块、行、分支和指令覆盖范围 因此,您不能简单地将这两个工具生成的结果之间的等号放在一起。我建议并排检查报告,找出最大的差异在哪里,

我刚刚用Clover对我的项目进行了代码覆盖率分析,结果大约是60%。我与Jacoco对同一个项目进行了分析,结果约为52%。8%的差异正常吗?我过去也曾使用这些工具运行过代码覆盖率分析,差异从来没有这么大。

请注意,Clover和JaCoCo使用的代码覆盖率指标不同:

  • Clover具有方法、声明和分支覆盖率(加上三者总和的总覆盖率指标)
  • JaCoCo具有方法、代码块、行、分支和指令覆盖范围
因此,您不能简单地将这两个工具生成的结果之间的等号放在一起。我建议并排检查报告,找出最大的差异在哪里,然后看看在那里使用的代码结构,从而产生这种差异


哦。顺便说一句请记住,JaCoCo使用字节码插装,这意味着它还将插装由javac编译器创建的、在源代码中不可见的合成方法。

请注意,Clover和JaCoCo使用不同的代码覆盖率指标:

  • Clover具有方法、声明和分支覆盖率(加上三者总和的总覆盖率指标)
  • JaCoCo具有方法、代码块、行、分支和指令覆盖范围
因此,您不能简单地将这两个工具生成的结果之间的等号放在一起。我建议并排检查报告,找出最大的差异在哪里,然后看看在那里使用的代码结构,从而产生这种差异


哦。顺便说一句请记住,JaCoCo使用字节码插装,这意味着它还将插装javac编译器创建的、在源代码中不可见的合成方法。

JaCoCo不插装合成方法;它检测并忽略它们(隐式no-args构造函数除外,从技术上讲,这些构造函数不是合成的)。此外,JaCoCo实际上只有声明和分支机构覆盖范围(参见);其他(行、代码块、方法)只是衍生指标。JaCoCo不使用合成方法;它检测并忽略它们(隐式no-args构造函数除外,从技术上讲,这些构造函数不是合成的)。此外,JaCoCo实际上只有声明和分支机构覆盖范围(参见);其他(行、代码块、方法)只是派生度量。