在我的项目中,我使用AndroidX Lifecycle ViewModel(2.2.0-rc01)即时通讯,并且即时通讯需要编写两次浓缩咖啡测试,以告诉浓缩咖啡测试过的应用程序仍然很忙。 viewModelScope需要告诉espresso很忙。
val ViewModel.viewModelScope: CoroutineScope
get() {
val scope: CoroutineScope? = this.getTag(JOB_KEY)
if (scope != null) {
return scope
}
return setTagIfAbsent(JOB_KEY,
CloseableCoroutineScope(SupervisorJob() + Dispatchers.Main.immediate))
}
internal class CloseableCoroutineScope(context: CoroutineContext) : Closeable, CoroutineScope
{
override val coroutineContext: CoroutineContext = context
override fun close() {
coroutineContext.cancel()
}
}
扩展viewModelScope并使用CountingIdleResource是有效的解决方案吗? 还是我只需要InstantTaskExecutorRule?
协程作业具有#invokeOnCompletion函数,可用于减少空闲资源。
谢谢
似乎正在进行一些讨论:https://github.com/Kotlin/kotlinx.coroutines/issues/242