2017-07-27 4 views
9

Mein Android-App ist Multi-Modul-Projekt:Android Studio 3/Kotlin Code Coverage

include (android-app/kotlin-android)':application', (pure kotlin)':presentation', (pure kotlin)':domain', (android-library/kotin-android)':dataproviders' 

Ich verwende Junit/Mockito für Tests und ich habe Problem mit Codeabdeckung für Kotlin android-Module zu erzeugen nur. code coverage report Geprüfte Zeilen sind für Android Studio sichtbar.

getestet Klasse in ui.viewmodel Paket:

tested lines for kotlin-android module

Aber für reinen Kotlin (. ZB Domain, Präsentation) Berichterstattung Test funktioniert: code coverage report pure kotlin module

I‘ m mit Android Studio 3.0 Canary 8 Sie können meine Build.Gradle-Dateien bei github:

build.gradle

dependencies.gradle

application.build.gradle

presentation.build.gradle

Beispiel Test in Android Anwendungsmodul:

MostPopularViewModelTest

Beispiel Test in reinem Kotlin mod ule:

MostPopularPresenterTest

Kann jemand helfen mir bei meinem Problem? Ich habe versucht, Code Coverage über Jacoco zu generieren, aber es zeigte auch keine Codeabdeckung.

Antwort

6

Lösung ist es, diese diese gradle Aufgabe in build.gradle für Modul hinzufügen:

task copyTestClasses(type: Copy) { 
    from "build/tmp/kotlin-classes/debugUnitTest" 
    into "build/intermediates/classes/debug" 
} 

Und laufen:

gradlew copyTestClasses 

Dann Code-Coverage-Bericht ohne Probleme erzeugen.

+3

Dies scheint so, als würde man den Test anstatt der Codeabdeckung melden? – Elye

+0

Danke für diesen Tipp! @Elye hat Recht, du solltest von "build/tmp/kotlin-classes/debug" kopieren. – Rule

+0

@Hype Sieh dir die ausstehende Änderung an und genehmige sie, wenn du es für nötig hältst, deine Antwort zu verbessern. – FrankerZ