【发布时间】:2018-06-15 14:00:36
【问题描述】:
我有这样的课
class SomeClass {
fun someFun() {
// ... Some synchronous code
async {
suspendfun()
}
}
private suspend fun suspendFun() {
dependency.otherFun().await()
// ... other code
}
}
我想对someFun() 进行单元测试,所以我编写了一个如下所示的单元测试:
@Test
fun testSomeFun() {
runBlocking {
someClass.someFun()
}
// ... verifies & asserts
}
但这似乎不起作用,因为在 runBlocking 中的所有内容完成之前,runBlocking 实际上不会阻止执行。如果我直接在runBlocking 内部测试suspendFun(),它会按预期工作,但我希望能够一起测试someFun()。
知道如何使用同步代码和异步代码测试函数吗?
【问题讨论】:
标签: unit-testing kotlin coroutine kotlin-coroutines