Android Kotlin sortedBy проблема покрытия кода метода - PullRequest
0 голосов
/ 22 марта 2019

У меня есть метод, который сортирует данный список на основе флага «включен».Когда я вызываю этот метод внутри своего теста, тест просто работает нормально.Когда я удаляю логику сортировки из этого метода и просто возвращаю sortedList, покрытие создается для всего класса, но когда я запускаю тестовый класс с покрытием, оно дает покрытие только для этого метода.Он показывает этот вывод-

(покрытие): данные класса не были извлечены: com.my.pkg.viewmodel.VariantViewModel $ getSortedVariants $$ inlined $ compareBy $ 1: java.lang.Throwable com.my.pkg.viewmodel .. *

Метод выглядит следующим образом -

fun getSortedVariants() : List<Variant> {
    return sortedList.sortedBy { !it.isEnabled }
 }

Для JaCoCo блок равен -

def fileFilter = [
        '**/R.class',
        '**/R$*.class',
        '**/BuildConfig.*',
        '**/Manifest*.*',
        '**/*$ViewInjector*.*',
        '**/*$ViewBinder*.*',
        '**/*Test*.*',
        '**/DataBind*.*',
        '**/AppDb_Impl*.*',
        '**/*databinding',
        '**/*$Lambda$*.*', // Jacoco can not handle several "$" in class name.
        '**/*Module.*', // Modules for Dagger.
        '**/*Dagger*.*', // Dagger auto-generated code.
        '**/*MembersInjector*.*', // Dagger auto-generated code.
        '**/*_Provide*Factory*.*',
        '**/*_Factory.*', //Dagger auto-generated code
        '**/*$*$*.*', // Anonymous classes generated by kotlin
        //add libraries
        'android/**/*.*',
        '**/com/my/pkg/generated/*',
        'uk/**/*.*',
        'io/**/*.*',
        //remove what we don't test
        'androidTest/**/*.*',
        'test/**/*.*',
        '**/injector/**/*.*',
        '**/mock/**/*.*',
        '**/**_ViewBinding**',
        '**/*EventType.*',
        '**/**Mocked',
        '**/databinding/**/*.*',
        '**/android/databinding/*Binding.*',
        '**/BR.*',
        '**/R.*',
        '**/R$*.*',
        '**/BuildConfig.*',
        '**/Manifest*.*',
        '**/*_MembersInjector.*',
        '**/Dagger*Component.*',
        '**/Dagger*Component$Builder.*',
        '**/*Module_*Factory.*',
        '**/*ViewPager*.*',
        '**/*ViewHolder*.*',
        '**/*Module*.*'
]

rootProject.subprojects.each { proj ->
    javaClasses   << fileTree(dir: "$proj.buildDir/intermediates/javac/debug", excludes: fileFilter)
    kotlinClasses << fileTree(dir: "$proj.buildDir/tmp/kotlin-classes/debug", excludes: fileFilter)
    javaSrc       << "$proj.projectDir/src/main/java"
    kotlinSrc     << "$proj.projectDir/src/main/kotlin"
    execution     << fileTree(dir: proj.buildDir,
            includes: ['jacoco/testDebugUnitTest.exec',
                       'outputs/code_coverage/debugAndroidTest/connected/**/*.ec'])
}

Но удаляется весьfileFilter также не имеет никакого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...