JAVA Jacoco线路覆盖率不正确

问题描述 投票:0回答:1

我正在尝试使用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'
}

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

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

但是在覆盖范围内:Jacoco coverage

[当我使用IntelliJ Coverage运行coverage时,它会受到打击:IntelliJ coverage

想法?

java gradle code-coverage jacoco
1个回答
0
投票

只是一个想法:

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

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

请参见this explanation

© www.soinside.com 2019 - 2024. All rights reserved.