我正在尝试使用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
想法?
只是一个想法:
我假设您正在将jacoco作为Java代理(运行时工具)运行。在这种情况下,在jacoco进行的字节码检测与PowerMock进行的字节码修改之间可能存在一个类。
因此,未涵盖的类可能是使用PowerMock类加载器加载的类。