Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Gradle DSL JSONObject未模拟_Gradle_Kotlin_Gradle Kotlin Dsl_Kotlin Dsl - Fatal编程技术网

Kotlin Gradle DSL JSONObject未模拟

Kotlin Gradle DSL JSONObject未模拟,gradle,kotlin,gradle-kotlin-dsl,kotlin-dsl,Gradle,Kotlin,Gradle Kotlin Dsl,Kotlin Dsl,自从我将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文件中。 但在这之后,它仍然不起作用 My(buils

自从我将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文件中。 但在这之后,它仍然不起作用

My(builsSrc)build.gradle.kts文件:

plugins {
    `kotlin-dsl`
}

repositories {
    google()
    jcenter()
}
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)
}
我的(应用程序)build.gradle.kts文件:

plugins {
    `kotlin-dsl`
}

repositories {
    google()
    jcenter()
}
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)
}
我不认为我错过了什么。 有人知道如何解决这个问题吗


我终于通过以下方法找到了解决方案:

apply(from = "../testOptions.gradle")
其中包括:

android {
    testOptions {
        unitTests.returnDefaultValues = true
    }
}

我最终通过以下方法找到了解决方案:

apply(from = "../testOptions.gradle")
其中包括:

android {
    testOptions {
        unitTests.returnDefaultValues = true
    }
}
以下工作:

  testOptions {
    unitTests.apply {
      isReturnDefaultValues = true
    }
  }
请注意,您需要执行渐变同步以拾取配置,以下操作有效:

  testOptions {
    unitTests.apply {
      isReturnDefaultValues = true
    }
  }

请注意,您需要执行梯度同步以拾取配置

更改此行后重试:proguardFiles(getDefaultProguardFile(“proguard android optimize.txt”)、file(“proguard rules.pro”))我对该行进行了注释,但没有任何帮助。还有其他选择吗?不,不要评论,用我的行替换它,还想问您是否将setting.gradle更改为setting.gradle.kts,对吗?当然,你这样做只是为了确认。我换了它,但我仍然得到同样的错误。是的,所有内容都转换为.gradle.kts。也许可以选择使用kotlin dsl为这个特定测试运行groovy dsl?在更改这一行后尝试:proguardFiles(getDefaultProguardFile(“proguard android optimize.txt”)、file(“proguard rules.pro”))我对这一行进行了注释,但没有任何帮助。还有其他选择吗?不,不要评论,用我的行替换它,还想问您是否将setting.gradle更改为setting.gradle.kts,对吗?当然,你这样做只是为了确认。我换了它,但我仍然得到同样的错误。是的,所有内容都转换为.gradle.kts。也许可以选择使用kotlin dsl来运行groovy dsl进行此特定测试?