Notieren Sie sich diesmal die Erfassung der Abdeckung mit Android Instrumented Tests. Erstens, wenn Sie einen Unit-Test mit Android Studio durchführen Ich habe über die Verwendung von Robolectric zum Testen von Android-abhängigen Teilen auf einer JVM gesprochen. Aus verschiedenen Gründen habe ich den vorherigen Test Android Test geschrieben.
Ich wusste zum ersten Mal nichts über die Android-Entwicklung, daher hatte ich eine gute Idee, verschiedene Dinge zu untersuchen.
Was daran falsch ist, ist, dass ich keine C0C1-Abdeckung erhalten konnte, weil die Jacoco-Version alt war. Ehrlich gesagt finde ich es nicht lächerlich, Zeit ehrlich mit der Berichterstattung über C0C1 zu verbringen. Es gibt keine "Je höher die Abdeckung, desto höher die Qualität des Quellcodes".
Nun, wenn mir gesagt wurde, ich solle es auf 100 setzen, hätte ich keine andere Wahl, als es zu tun, also habe ich verschiedene Dinge untersucht. Ich schreibe keinen Testcode, um ihn zu 100% zu machen, sondern gebe ihn Jacoco 0.8.0 oder höher. In dem Artikel heißt es, dass ein Upgrade auf die Jacoco 0.8.0-Version die C0C1-Abdeckung verbessert. Ich konnte jedoch die Version von Jacoco, auf die sich der createDebugCoverageReport bezieht, einfach nicht ändern.
Dies kann auf mangelnde Studien zurückzuführen sein, aber ich konnte in createDebugCoverageReport keine Ausschlüsse festlegen. Ich habe viel recherchiert, aber ich konnte es nicht tun, also kann ich nichts dagegen tun.
Unter den obigen Gesichtspunkten 1 und 2 geben wir Strategie 1 auf und fahren mit Strategie 2 fort.
Wie Sie Ihre eigene Aufgabe schreiben, um Berichterstattung in Gradle zu erhalten. Damit konnte ich 1 und 2 von Strategie 1 lösen.
jacoco {
toolVersion = "0.8.3"
}
task jacocoTestReport(type: JacocoReport, dependsOn: "connectedDebugAndroidTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
// exclude auto-generated classes and tests
def fileFilter = ['**/R.class',
'**/R$*.class',
'**/R.styleable',
'**/R$*.styleable',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*IScript*.*',
'android/**/*.*',
'androidx/**/*.*',
'**/*_Impl*',
'**/*_Factory*',
'**/*_MembersInjector*',
'**/*Fake*']
def debugTree = fileTree(dir:
"${project.buildDir}/intermediates/javac/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.projectDir, includes:
['**/*.exec', '**/*.ec'])
reports {
xml.enabled = true
xml.destination = "${buildDir}/jacocoTestReport.xml"
csv.enabled = false
html.enabled = true
html.destination = "${buildDir}/reports/jacoco"
}
}
Ich konnte die Version von Jacoco angeben und solche Ausschlüsse festlegen. Lassen Sie uns diesen in der Zukunft verwenden.
Tschüss
Recommended Posts