我正在尝试为this Android project生成Jacoco XML报告。我正在使用gradle-android-junit-jacoco-plugin版本0.16.0(今天是最新的)。当我运行jacocoTestReportMerged
任务时,它失败并显示以下错误:
Caused by: java.io.IOException: Error while analyzing XmlPullParsers.class.
at org.jacoco.core.analysis.Analyzer.analyzerError(Analyzer.java:170)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:142)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:165)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:201)
at org.jacoco.ant.ReportTask.createBundle(ReportTask.java:570)
at org.jacoco.ant.ReportTask.createReport(ReportTask.java:542)
at org.jacoco.ant.ReportTask.execute(ReportTask.java:495)
... 210 more
Caused by: java.lang.IllegalStateException: Can't add different class with same name:
info/metadude/android/eventfahrplan/network/serialization/XmlPullParsers
at org.jacoco.core.analysis.CoverageBuilder.visitCoverage(CoverageBuilder.java:107)
at org.jacoco.core.analysis.Analyzer$1.visitEnd(Analyzer.java:98)
at org.objectweb.asm.ClassVisitor.visitEnd(ClassVisitor.java:338)
at org.jacoco.core.internal.flow.ClassProbesAdapter.visitEnd(ClassProbesAdapter.java:98)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:683)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:391)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:124)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:140)
... 215 more
我开始配置排除规则,例如...
junitJacoco {
excludes = [
"**/XmlPullParsers.*"
]
}
...但是任务在下一个文件处失败-因此,这似乎不是正确的方法。
我也尝试了0.17.0-SNAPSHOT和0.16.0之前的版本,但是没有成功。此项目中使用了Gradle 6.3。
如何为我的项目配置Gradle插件?
./gradlew clean jacocoTestReportDebug jacocoTestReport &&
./gradlew mergeJacocoReports jacocoTestReportMerged &&
open build/reports/jacoco/index.html
请注意,我的项目还只有kotlin(不是android)模块,这就是为什么两个命令都需要执行的原因。
如果要检查所有项目配置,它是开源的,可以找到它here我真的希望对您有所帮助,编码愉快! :)