Android工作室代码覆盖率未显示任何Kotlin类

时间:2017-08-22 19:03:32

标签: android unit-testing android-studio kotlin

我有2个基于Kotlin的AS项目。一个工作正常,另一个没有。两者都具有相同的结构和gradle配置。我使用Kotlin 1.1.4-2和AS 3.0b2。

问题在于,当我运行代码覆盖时,我测试的类甚至不会显示在覆盖率报告下。我唯一看到的是R.java和BuildConfig.java,但我找不到任何源文件。

所有源文件都是基于Kotlin的。我使用Spek进行单元测试。与我的其他功能项目相同的设置和版本。我尝试使用JaCoCo和Jetbrains代码覆盖,但都不起作用。

我道歉,我还没有能够嵌入图片。

这是问题所在: coverage report

这是我的项目结构: file structure

这是我的gradle android block:

compileSdkVersion 26
buildToolsVersion "26.0.1"

defaultConfig {
    minSdkVersion 16
    targetSdkVersion 26
    versionCode 1
    versionName libraryVersion
}

buildTypes {
    debug {
        testCoverageEnabled = true
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

和我的依赖项:

implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation "io.reactivex.rxjava2:rxkotlin:2.1.0"

testImplementation 'junit:junit:4.12'
testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
testImplementation 'org.jetbrains.spek:spek-api:1.1.2'
testImplementation 'org.jetbrains.spek:spek-junit-platform-engine:1.1.2'
testImplementation 'org.junit.platform:junit-platform-runner:1.0.0-M4'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.0.0-M4'

implementation 'com.android.support:appcompat-v7:26.0.1'

implementation 'com.squareup.okhttp3:okhttp-ws:3.3.1'
implementation 'com.google.protobuf:protobuf-java:2.6.1'

我试过了

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

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

在我测试之前,它也没有工作。

我的另一个项目是什么奇怪,使用相同的AS版本,Kotlin版本和项目结构,工作正常并生成适当的代码覆盖率。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:8)

尝试使用JaCoco进行覆盖,这是IntelliJ IDEA问题Kotlin inline keyword causing IntelliJ IDEA Coverage reporting 0%

如何使用JaCoco获取覆盖范围: Making Android Studio Test Coverage works

履历:

  1. 点击编辑配置 Run edit configurations

  2. go Run / Debug Configurations-> Defaults-> Android JUnit选择te Tap Code Coverage enter image description here

  3. 选择覆盖范围:选择JaCoCo

  4. 申请 - >确定

  5. 再次进行测试,瞧你会得到报道