#gradle #kotlin #gradle-kotlin-dsl #kotlin-dsl
#gradle #kotlin #gradle-kotlin-dsl #kotlin-dsl
Вопрос:
С тех пор как я преобразовал свой Groovy в Kotlin DSL gradle, мои unittests больше не работают. Я получаю сообщение об ошибке:
java.lang.RuntimeException: Method get in org.json.JSONObject not mocked. See http://g.co/androidstudio/not-mocked for details.
Итак, я перешел по ссылке и добавил testoptions ко всем моим файлам build.gradle.kts.
Но после этого он все еще не работает.
Мой (builsSrc) файл build.gradle.kts:
plugins {
`kotlin-dsl`
}
repositories {
google()
jcenter()
}
Мой файл (App) 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)
}
Мне не кажется, что я что-то упускаю.
У кого-нибудь есть информация о том, как это исправить?
Комментарии:
1. попробуйте после изменения этой строки: ProGuard Files(getDefaultProguardFile(«proguard-android-optimize.txt «), файл(«proguard-rules.pro «))
2. Я прокомментировал строку, но это не помогло. Есть другие варианты?
3. нет, не комментируйте это, замените его моей строкой, а также хочу спросить, вы изменили setting.gradle на setting.gradle.kts правильно? конечно, вы это сделали, но только для подтверждения.
4. Я заменил его, но я все еще получаю ту же ошибку. Да, все преобразовано в .gradle.kts. может быть, вариант — использовать kotlin dsl для запуска groovy dsl для этого конкретного теста?
Ответ №1:
Работает следующее:
testOptions {
unitTests.apply {
isReturnDefaultValues = true
}
}
Обратите внимание, что вам нужно выполнить синхронизацию gradle, чтобы подобрать конфигурацию
Ответ №2:
Мне наконец удалось найти решение, используя:
apply(from = "../testOptions.gradle")
который содержит:
android {
testOptions {
unitTests.returnDefaultValues = true
}
}