添加最新的 Sentry 依赖项(7.6.0)后,我的测试覆盖范围被破坏。我的一些课程开始收到这些错误:
[ant:jacocoReport] Classes in bundle 'app' do not match with execution data. For report generation the same class files must be used as at runtime.
[ant:jacocoReport] Execution data for class *** does not match.
移除哨兵覆盖后,它可以正常工作。 有人遇到过这个问题吗
这是我的 jacoco 配置:
apply plugin: 'jacoco'
jacoco {
toolVersion '0.8.11'
}
tasks.withType(Test).configureEach {
jacoco.includeNoLocationClasses = true
jacoco.excludes = ['jdk.internal.*']
}
project.afterEvaluate {
tasks.register("defaultDebugCoverage", JacocoReport) {
dependsOn("testDefaultDebugUnitTest")
mustRunAfter('testDefaultDebugUnitTest')
group = "Reporting"
description = "Generate Jacoco coverage reports for the defaultDebug build."
reports {
html.required.set(true)
xml.required.set(true)
}
def excludes = [
'**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*_Provide*Factory*.*',
'**/*_ViewBinding*.*',
'**/AutoValue_*.*',
'**/R2.class',
'**/R2$*.class',
'**/*Directions$*',
'**/*Directions.*',
'**/*Binding.*'
]
def jClasses = "${project.buildDir}/intermediates/javac/defaultDebug/classes"
def kClasses = "${project.buildDir}/tmp/kotlin-classes/defaultDebug"
def javaClasses = fileTree(dir: jClasses, excludes: excludes)
def kotlinClasses = fileTree(dir: kClasses, excludes: excludes)
classDirectories.from = files([javaClasses, kotlinClasses])
def sourceDirs = ["${project.projectDir}/src/main/java", "${project.projectDir}/src/main/kotlin",
"${project.projectDir}/src/defaultDebug/java", "${project.projectDir}/src/defaultDebug/kotlin"]
sourceDirectories.from = files(sourceDirs)
executionData.from = files(["${project.buildDir}/jacoco/testDefaultDebugUnitTest.exec"])
}
}
经过一番研究,我发现Sentry可以修改我的类。但我不知道如何解决它。
我也使用 Sentry,也遇到了这个问题。我通过在应用程序的 build.gradle 中添加此配置来解决它:
sentry {
tracingInstrumentation {
enabled = false
}
}
进一步排除 Sentry 故障的链接位于 docs