Kotlin Gradle DSL JSONObject не издевается

Поскольку я преобразовал свой Groovy в Kotlin DSL gradle, мои модульные тесты больше не работают. Я получаю сообщение об ошибке:

java.lang.RuntimeException: Method get in org.json.JSONObject not mocked. See http://g.co/androidstudio/not-mocked for details.

Итак, я выполнил ссылка и добавил тестовые возможности ко всем моим файлам build.gradle.kts. Но после этого все равно не работает.

Мой файл (builsSrc) build.gradle.kts:

plugins {
    `kotlin-dsl`
}

repositories {
    google()
    jcenter()
}

Мой (приложение) файл build.gradle.kts:

plugins {
    id("com.android.library")
    kotlin("android")
    kotlin("android.extensions")
}


android {
    compileSdkVersion(Versions.Android.compileSdkVersion)

    defaultConfig {
        versionCode = Versions.Android.appVersionCode
        versionName = Versions.Android.appVersionName

        minSdkVersion(Versions.Android.minSdkVersion)
        targetSdkVersion(Versions.Android.targetSdkVersion)

        testInstrumentationRunner = Config.Test.instrumentationRunner
    }

    buildTypes {
        getByName("release") {
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }

    testOptions {
        unitTests.setReturnDefaultValues(true)
    }
}

dependencies {
    implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))

    implementation(Depends.Kotlin.reflect)
    implementation(Depends.Kotlin.kotlinStdLib)

    testImplementation(Depends.TestLibraries.json)
    testImplementation(Depends.TestLibraries.jUnit)
    androidTestImplementation(Depends.TestLibraries.jUnitRunner)
    androidTestImplementation(Depends.TestLibraries.espressoCore)
}

Меня не волнует, что я что-то упускаю. У кого-нибудь есть id, как это исправить?

Метод изображения не имитируется


person Geert Berkers    schedule 29.03.2019    source источник
comment
попробуйте после изменения этой строки: proguardFiles (getDefaultProguardFile (proguard-android-optimize.txt), file (proguard-rules.pro))   -  person Shweta Chauhan    schedule 30.03.2019
comment
Я прокомментировал строку, но это не помогло. Есть другие варианты?   -  person Geert Berkers    schedule 30.03.2019
comment
нет, не комментируйте, замените его моей строкой, а также хотите спросить, правильно ли вы изменили setting.gradle на setting.gradle.kts? Конечно, вы сделали это, но только для подтверждения.   -  person Shweta Chauhan    schedule 30.03.2019
comment
Я заменил его, но все равно получаю ту же ошибку. Да, все конвертировано в .gradle.kts. может быть, можно использовать kotlin dsl для запуска groovy dsl для этого конкретного теста?   -  person Geert Berkers    schedule 01.04.2019


Ответы (2)


Наконец-то мне удалось найти решение, используя:

apply(from = "../testOptions.gradle")

который содержит:

android {
    testOptions {
        unitTests.returnDefaultValues = true
    }
}
person Geert Berkers    schedule 01.04.2019

Следующие работы:

  testOptions {
    unitTests.apply {
      isReturnDefaultValues = true
    }
  }

Обратите внимание, что вам нужно выполнить синхронизацию gradle, чтобы подобрать конфигурацию.

person Tobrun    schedule 03.10.2019