JAVA Jacoco 不正确的行覆盖

JAVA Jacoco Incorrect line coverage

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

Gradle版本: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'
}

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

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

但在报道中:

当我 运行 使用 IntelliJ 覆盖时,它会受到影响:

想法?

仅供参考:

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

因此,可能未涵盖的 classes 是使用 PowerMock classloader 加载的 classes。

this explanation