首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotest和kotlinx-coroutines-test集成

Kotest和kotlinx-coroutines-test集成
EN

Stack Overflow用户
提问于 2021-10-02 13:15:00
回答 2查看 450关注 0票数 2

我在kotest中使用了Funspec测试风格,框架自动注入了一个coroutineScope,如下所示。

代码语言:javascript
复制
class MyTestSpec: FunSpec() {
    init {
        test("test event loop") {
           mySuspendedFunction() // a coroutineScope is already injected by the test framework here     
        }
    }
}

如何将Kotest框架配置为在测试中使用kotlinx.coroutines.test.TestCoroutineScope实例而不是kotlinx.coroutines.CoroutineScope?或者,这是不是有什么原因呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-02 15:06:47

创建一个测试监听器,如下所示:

代码语言:javascript
复制
class MainCoroutineListener(
    val testDispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher()

) : TestListener {
    override suspend fun beforeSpec(spec: Spec) {
        Dispatchers.setMain(testDispatcher)
    }

    override suspend fun afterSpec(spec: Spec) {
        Dispatchers.resetMain()
        testDispatcher.cleanupTestCoroutines()
    }
}

然后在测试中使用它,如下所示

代码语言:javascript
复制
class MyTest : FunSpec({
    listeners(MainCoroutineListener())
    tests...
})
票数 2
EN

Stack Overflow用户

发布于 2021-10-13 16:52:25

从Kotest5.0开始,就有了对TestCoroutineDispatcher的内置支持。请参阅here

简单地说:

代码语言:javascript
复制
class MyTest : FunSpec(
  {
    test("do your thing").config(testCoroutineDispatcher = true) { 
    }
  }
)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69417255

复制
相关文章

相似问题

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