JAVA Jacoco 行覆盖不正确

use*_*626 5 java code-coverage gradle jacoco

我正在尝试使用 Jacoco 来获取 Java 8 项目的代码覆盖率。由于某种原因,我看到线路覆盖率较低。

摇篮版本:4.8.1

Gradle.build

apply plugin: "java"
apply plugin: "jacoco"

jacoco {
    toolVersion = "0.8.5    "
    reportsDir = file("$buildDir/customJacocoReportDir")
}
jacocoTestReport {
    reports {
        xml.enabled false
        csv.enabled false
        html.destination file("${buildDir}/jacocoHtml")
    }
}
dependencies {
    testCompile group: 'org.easymock', name: 'easymock', version: '3.6'
    testCompile group: 'org.powermock', name: 'powermock-easymock-release-full', version: '1.6.4'
}
Run Code Online (Sandbox Code Playgroud)

当我使用 Java 调试器时,我在测试过程中看到以下行被命中:

public class RangeStateStore {
    public void setRangeState(KeyValueStore<String, RangeStateObj>  kvStorage, RangeStateObj rangeStateObj) {
        kvStorage.put(rangeStateObj.key, rangeStateObj);
    }
Run Code Online (Sandbox Code Playgroud)

但在报道中: 雅科科报道

当我使用 IntelliJ 覆盖率运行覆盖率时,它受到了欢迎: 智能覆盖

有想法吗?

Mar*_*nik 0

只是作为一个想法:

我假设您正在将 jacoco 作为 java 代理(运行时检测)运行。在这种情况下,jacoco 进行的字节码检测和 PowerMock 进行的字节码修改之间可能存在一个类。

因此,未覆盖的类可能是使用 PowerMock 类加载器加载的类。

这个解释