У меня есть модуль test-utils, который содержит testImplementation
, androidTestImplementation
и некоторые правила и код расширения для чтения файлов, например
fun getResourceAsText(path: String): String {
return object {}.javaClass.classLoader!!.getResource(path)!!.readText()
}
inline fun <reified T> convertToObjectsFromString(input: String): T? {
return Gson().fromJsonWithType<T>(input)
}
inline fun <reified T> Gson.fromJsonWithType(json: String): T? =
fromJson<T>(json, object : TypeToken<T>() {}.type)
build.gradle.kts
модуль test-utils файлов
import extension.addInstrumentationTestDependencies
import extension.addUnitTestDependencies
plugins {
id(Plugins.ANDROID_LIBRARY_PLUGIN)
id(Plugins.KOTLIN_ANDROID_PLUGIN)
id(Plugins.KOTLIN_ANDROID_EXTENSIONS_PLUGIN)
id(Plugins.KOTLIN_KAPT_PLUGIN)
}
android {
compileSdkVersion(AndroidVersion.COMPILE_SDK_VERSION)
defaultConfig {
minSdkVersion(AndroidVersion.MIN_SDK_VERSION)
targetSdkVersion(AndroidVersion.TARGET_SDK_VERSION)
versionCode = AndroidVersion.VERSION_CODE
versionName = AndroidVersion.VERSION_NAME
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
sourceSets {
val sharedTestDir = "src/test-shared/java"
getByName("test") {
java.srcDir(sharedTestDir)
}
getByName("androidTest") {
java.srcDir(sharedTestDir)
resources.srcDir("src/test/resources")
}
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
implementation(Deps.KOTLIN)
implementation(Deps.ANDROIDX_CORE_KTX)
addUnitTestDependencies()
addInstrumentationTestDependencies()
}
Я попытался добавить модуль test-utils, используя implementation(project(":test-utils"))
и testImplementation(project(":test-utils"))
, но когда я запускаю тест из другого модуля, например, из модуля данных, я получаю
Unresolved reference: convertToObjectsFromString
или простая строка для папки
Unresolved reference: RESPONSE_JSON_PATH
, которая равна const val RESPONSE_JSON_PATH = "response.json"
, хотя импорт в этом тестовом классе не красный и cmd + click указывает точное местоположение.