Ely*_*lye 7 unit-testing kotlin kotlin-coroutines
我有这个功能
override fun trackEvent(trackingData: TrackingData) {
trackingData.eventsList()
}
Run Code Online (Sandbox Code Playgroud)
我可以进行如下测试。
@Test
fun `My Test`() {
// When
myObject.trackEvent(myTrackingMock)
// Then
verify(myTrackingMock, times(1)).eventsList()
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我把它变成一个
override fun trackEvent(trackingData: TrackingData) {
GlobalScope.launch{
trackingData.eventsList()
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么能让我的测试继续运行?(即可以使launch同步?)
要找到答案,请尝试提出一个相关问题:“我如何对具有以下功能的函数进行单元测试:
Thread { trackingData.eventsList() }
Run Code Online (Sandbox Code Playgroud)
在里面?”
您唯一的希望是运行一个循环,在一段时间内重复检查预期条件,直到放弃并声明测试失败。
当您编写 时GlobalScope.launch,您放弃了对 Kotlin 结构化并发的兴趣,因此您将不得不诉诸非结构化和非确定性的测试方法。
也许最好的办法是重写代码以使用您控制下的范围。
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |