首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin多平台项目中的协同例程

Kotlin多平台项目中的协同例程
EN

Stack Overflow用户
提问于 2022-08-03 11:03:54
回答 2查看 132关注 0票数 1

我试图在Kotlin多平台中使用"runTest()“。我以Jetbrains的“入门”-project为例。(https://kotlinlang.org/docs/multiplatform-library.html)

问题是runTest()没有找到协同上下文。它给出了以下构建错误:

无法访问类“kotlin.coroutines.coroutineContext”。检查模块类路径中缺少或冲突的依赖项。

这是我的测试:

代码语言:javascript
复制
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中设置了以下内容:

代码语言:javascript
复制
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")
  }
}

请帮帮我-我少了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-03 13:01:02

事实证明,想法是有问题的。我添加了以下依赖项以消除错误:

代码语言:javascript
复制
dependencies {
  commonTestImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4")
}

它不应该是真正需要的,因为普通的测试不依赖于协同,而是一个可接受的工作。

票数 2
EN

Stack Overflow用户

发布于 2022-08-03 11:09:18

您可以按照文档建议的方式运行runTest

代码语言:javascript
复制
@Test
fun exampleTest() = runTest {
    val deferred = async {
        delay(1_000)
        async {
            delay(1_000)
        }.await()
    }

    deferred.await() // result available immediately
}

文档代码链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73220623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档