web-dev-qa-db-ja.com

Android StudioコードカバレッジにKotlinクラスが表示されない

KotlinベースのASプロジェクトが2つあります。 1つは正常に機能し、もう1つは機能しません。どちらも同じ構造とgradle configを持っています。 AS 3.0b2でKotlin 1.1.4-2を使用しています。

問題は、コードカバレッジを実行すると、テストしているクラスがカバレッジレポートに表示されないことです。私が目にするのはR.JavaとBuildConfig.Javaだけですが、ソースファイルが見つかりません。

すべてのソースファイルはKotlinベースです。私は単体テストにSpekを使用しています。他の機能プロジェクトと同じセットアップとバージョン。 JaCoCoとJetbrainsの両方のコードカバレッジを使用してみましたが、どちらも機能しません。

申し訳ありませんが、写真を埋め込むことはまだできません。

これが問題です: カバレッジレポート

これが私のプロジェクト構造です: ファイル構造

そしてこれが私の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バージョン、およびプロジェクト構造を使用している他のプロジェクトが正常に動作し、適切なコードカバレッジを生成していることです。

任意の助けいただければ幸いです。

19
Chris Dowd

カバレッジにJaCocoを使用してみてください、これはIntelliJですIDEA問題 IntelliJを引き起こすKotlinインラインキーワードIDEAカバレッジレポート0%

JaCocoを使用してカバレッジを取得する方法: Making Android Studio Test Coverage works

履歴書:

  1. 設定の編集をクリック 設定の編集を実行

  2. 実行/デバッグ構成->デフォルト-> Android JUnit select te Tap Code Coverage ここに画像の説明を入力

  3. カバレッジランナーを選択:JaCoCoを選択

  4. 適用-> OK

  5. もう一度テストを実行すると、カバレッジを取得できます