gpt4 book ai didi

unit-testing - Kotlin Multiplatform Gradle 单元测试无法解析 kotlin.test 引用

转载 作者:行者123 更新时间:2023-12-03 02:58:16 27 4
gpt4 key购买 nike

我正在尝试在我的公共(public)库中为我在 Android Studio 中的 Kotlin Multiplatform 项目测试一个 Kotlin 类。
我不得不重新配置 build.gradle文件多次并设法修复了大多数 Unresolved 引用,但 Gradle 仍然找不到 @Test 的引用注释,而编辑器识别出它来自 kotlin.test图书馆。
这是我的测试课:

import kotlin.test.*
import kotlinx.serialization.json.*
import Recipe

class RecipeTest {
@Test
fun serializeTest() {
val keys = arrayOf("Dessert", "Cookies", "Cute")
val ingredients = arrayOf("12 cups sugar", "2 cups flour", "1 bottle warm love")
val instructions = arrayOf("Sift together in bowl", "Cook however else you see fit!")
val recipe = Recipe(
"Macaroons",
"Morgan",
"Today",
"small cookies",
"1 hour",
keys,
"1 dozen macaroons",
"Dessert",
"French",
false,
ingredients,
instructions,
true
)
val jsonString = JSON.stringify(Recipe.serializer(), recipe)
val obj = JSON.parse(Recipe.serializer(), jsonString)
assertEquals(Recipe.toString(), jsonString)
assertEquals(Recipe.toString(), obj.toString())
}
}
我的模块 build.gradle 文件:
plugins {
id("com.android.library")
}

apply plugin: 'kotlin-multiplatform'
apply plugin: 'kotlinx-serialization'

android {
compileSdkVersion = 28
buildToolsVersion = '28.0.3'
defaultConfig {
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
sourceSets {
main {
manifest.srcFile 'src/androidMain/AndroidManifest.xml'
}
}
}

kotlin {
android {

}
iosArm64 {
binaries {
executable()
}
}
iosX64 {
binaries {
executable()
}
}

sourceSets {
commonMain {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-common'
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.9.1'
}
}

commonTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-common'
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.9.1'
implementation kotlin('test')
implementation kotlin('test-common')
implementation kotlin('test-annotations-common')
}
}
androidMain {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib'
implementation kotlin('test-common')
implementation kotlin('test-annotations-common')
}
}

iosMain {

}
}
}

configurations {
compileClasspath
}
当从命令行运行测试时,构建失败并出现异常,说

Unresolved reference: test


在与 @Test 的行注解。
编辑:我将接受的答案更改为似乎对其他人最有帮助的答案,但为了以防万一,我将留下我的旧答案。

最佳答案

我有一个类似的问题,发现我需要显式添加平台特定的 Kotlin 测试依赖项:

kotlin {

// ...

sourceSets {
commonTest {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-test-annotations-common"
implementation "org.jetbrains.kotlin:kotlin-test-common"
}
}

jvmTest {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-test-junit"
}
}

jsTest {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-test-js"
}
}
}
}
只有 commonTest dependencies我收到“ Unresolved reference :测试”错误。一旦我添加了 jvmTestjsTest阻止它修复了错误。

关于unit-testing - Kotlin Multiplatform Gradle 单元测试无法解析 kotlin.test 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508672/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com