2017-07-27 76 views
9

Mój android aplikacja jest wielo projekt modułu:Android Studio 3/Kotlin pokrycie kodu

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

Używam Junit/Mockito do testów i mam problem z generowaniem pokrycia kodu dla Kotlin modułów android tylko. code coverage report Testowane linie są widoczne dla studia Android.

testowany klasa w pakiecie ui.viewmodel:

tested lines for kotlin-android module

Ale dla czystej Kotlin (. Np domeny, prezentacja) zakres badań działa dobrze: code coverage report pure kotlin module

I m używając Android Studio 3.0 Canary 8 Możesz obejrzeć moje pliki build.gradle na github:

build.gradle

dependencies.gradle

application.build.gradle

presentation.build.gradle

Przykład test android modułu aplikacji:

MostPopularViewModelTest

przykładzie testowym w czystej KOTLIN mod ule:

MostPopularPresenterTest

może ktoś mi pomóc z moim problemem? Próbowałem generować pokrycie kodu przez Jacoco, ale również nie pokazywałem zasięgu kodu.

Odpowiedz

6

rozwiązaniem jest dodanie ten Gradle zadanie build.gradle dla modułu:

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

I run:

gradlew copyTestClasses 

Następnie generuje kod raportu pokrycia bez problemów.

+3

To wydaje się raportowanie testu zamiast pokrycia kodu? – Elye

+0

Dzięki za tę wskazówkę! @Elye ma rację, powinieneś skopiować z "build/tmp/kotlin-classes/debug" – Rule

+0

@Hype Zapoznaj się z oczekującą zmianą i zatwierdź ją, jeśli uznasz to za konieczne, aby poprawić swoją odpowiedź. – FrankerZ