2017-07-27 1 views
9

Mon application Android est un projet de module multipuces:Android Studio 3/Kotlin couverture de code

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

Je JUnit/Mockito pour les tests et j'ai problème avec la génération couverture de code pour les modules Android Kotlin seulement. code coverage report Les lignes testées sont visibles pour le studio android.

classe testé dans le paquet de ui.viewmodel:

tested lines for kotlin-android module

Mais, pour Kotlin pur (par exemple, domaine, présentation.) Couverture de test fonctionne très bien: code coverage report pure kotlin module

Je m en utilisant Android Studio 3.0 Canary 8 Vous pouvez regarder mes fichiers build.gradle à github:

build.gradle

dependencies.gradle

application.build.gradle

presentation.build.gradle

test de l'exemple de module d'application androïde:

MostPopularViewModelTest

test de l'exemple de mod pur Kotlin ule:

MostPopularPresenterTest

quelqu'un peut me aider avec mon problème? J'ai essayé de générer une couverture de code via Jacoco mais elle n'a pas montré de couverture de code.

Répondre

6

La solution est d'ajouter cette tâche gradle dans build.gradle pour le module:

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

Et courir:

gradlew copyTestClasses 

Générez ensuite rapport de couverture de code sans problème.

+3

Cela ressemble à signaler le test au lieu de la couverture de code? – Elye

+0

Merci pour ce conseil! @Elye a raison, vous devriez copier depuis "build/tmp/kotlin-classes/debug" – Rule

+0

@Hype Jetez un oeil à la modification en attente, et approuvez-la si vous le jugez nécessaire pour améliorer votre réponse. – FrankerZ