【问题标题】:Kotlin Gradle DSL JSONObject not mockedKotlin Gradle DSL JSONObject 未被模拟
【发布时间】:2019-08-20 14:03:55
【问题描述】:

自从我将 Groovy 转换为 Kotlin DSL gradle 后,我的单元测试不再工作了。我得到错误:

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

所以我遵循link 并将 testoptions 添加到我的所有 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)
}

它并不认为我错过了什么。 有没有人知道如何解决这个问题?

【问题讨论】:

    标签: gradle kotlin gradle-kotlin-dsl kotlin-dsl


    【解决方案1】:

    我终于设法找到了解决方案:

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

    其中包含:

    android {
        testOptions {
            unitTests.returnDefaultValues = true
        }
    }
    

    【讨论】:

      【解决方案2】:

      以下作品:

        testOptions {
          unitTests.apply {
            isReturnDefaultValues = true
          }
        }
      

      请注意,您需要进行 gradle 同步以获取配置

      【讨论】:

        猜你喜欢
        • 2019-09-15
        • 1970-01-01
        • 2019-03-22
        • 2018-11-05
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        • 1970-01-01
        • 2020-01-18
        相关资源
        最近更新 更多