我有一个像这样的类
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
内部测试suspendFun()
它将按预期工作,但我希望能够同时测试someFun()
。
有什么线索可以测试同时包含同步和异步代码的函数吗?
.await()
,异步块将不会传播任何异常? - user1809913async
函数的返回值,就不应该使用它。而应该使用launch
代替,这样未处理的异常会在恢复线程中抛出。 - Marko TopolnikrunBlocking { launch { ... }.join() }
?难道不能只用runBlocking { ... }
吗? - msrd0