我在kotest中使用了Funspec测试风格,框架自动注入了一个coroutineScope,如下所示。
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?或者,这是不是有什么原因呢?
发布于 2021-10-02 15:06:47
创建一个测试监听器,如下所示:
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()
}
}然后在测试中使用它,如下所示
class MyTest : FunSpec({
listeners(MainCoroutineListener())
tests...
})发布于 2021-10-13 16:52:25
从Kotest5.0开始,就有了对TestCoroutineDispatcher的内置支持。请参阅here
简单地说:
class MyTest : FunSpec(
{
test("do your thing").config(testCoroutineDispatcher = true) {
}
}
)https://stackoverflow.com/questions/69417255
复制相似问题