我试图在Kotlin多平台中使用"runTest()“。我以Jetbrains的“入门”-project为例。(https://kotlinlang.org/docs/multiplatform-library.html)
问题是runTest()没有找到协同上下文。它给出了以下构建错误:
无法访问类“kotlin.coroutines.coroutineContext”。检查模块类路径中缺少或冲突的依赖项。
这是我的测试:
class Base64JvmTest {
@OptIn(ExperimentalCoroutinesApi::class)
@Test
fun testNonAsciiString() {
runTest {
val utf8String = "Gödel"
val actual = Base64Factory.createEncoder().encodeToString(utf8String.toByteArray())
assertEquals("R8O2ZGVs", actual)
}
}
}在build.gradle.kts中,我在kotlin.sourceSets中设置了以下内容:
val jvmTest by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4")
}
}请帮帮我-我少了什么?
发布于 2022-08-03 13:01:02
事实证明,想法是有问题的。我添加了以下依赖项以消除错误:
dependencies {
commonTestImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4")
}它不应该是真正需要的,因为普通的测试不依赖于协同,而是一个可接受的工作。
发布于 2022-08-03 11:09:18
您可以按照文档建议的方式运行runTest
@Test
fun exampleTest() = runTest {
val deferred = async {
delay(1_000)
async {
delay(1_000)
}.await()
}
deferred.await() // result available immediately
}https://stackoverflow.com/questions/73220623
复制相似问题