Jacoco:IllegalStateException:无法添加具有相同名称的其他类

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

我正在尝试为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插件?

android junit code-coverage jacoco
1个回答
0
投票
我让它执行以下操作:

./gradlew clean jacocoTestReportDebug jacocoTestReport && ./gradlew mergeJacocoReports jacocoTestReportMerged && open build/reports/jacoco/index.html

请注意,我的项目还只有kotlin(不是android)模块,这就是为什么两个命令都需要执行的原因。

如果要检查所有项目配置,它是开源的,可以找到它here

我真的希望对您有所帮助,编码愉快! :)

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