[英]How can I test for android architecture components lifecycle events?
I have abstract class where i can register lifecycle event:我有抽象类,我可以在其中注册生命周期事件:
abstract class PollingServiceAbs<T> : LifecycleObserver {
private var timer: Timer? = null
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
open fun start() {
try {
timer = Timer()
timer?.schedule(object : TimerTask() {
override fun run() {
forcedFetch()
}
}, 0, POLLING_TIMEOUT)
} catch (e: Exception) {
e.printStackTrace()
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
open fun stop() {
try {
timer?.cancel()
timer?.purge()
} catch (e: Exception) {
e.printStackTrace()
}
timer = null
}
fun register(lifecycle: Lifecycle) {
lifecycle.addObserver(this)
}
And in my presenter i have next fun where i register observer:在我的演示者中,我注册观察者的下一个乐趣是:
fun onCreate(lifecycle: Lifecycle) {
pollingService.contract = this
pollingService.register(lifecycle)
}
How can I test my onStart()
and onStop()
functions ?如何测试我的
onStart()
和onStop()
函数?
UPD: Write next implementation, but markstate is deprecated: UPD:编写下一个实现,但不推荐使用 markstate:
@Test
@Throws(Exception::class)
fun onCreateTest() {
val lifecycleOwner: LifecycleOwner = mock(LifecycleOwner::class.java)
val lifecycle = LifecycleRegistry(mock(LifecycleOwner::class.java))
lifecycle.markState(Lifecycle.State.RESUMED)
Mockito.`when`(lifecycleOwner.lifecycle).thenReturn(lifecycle)
createPresenter(viewContract = mockView).onCreate(lifecycle)
assertNotNull(mockView)
Mockito.verify(mockPollingService).start()
Mockito.verifyNoMoreInteractions(mockView)
}
You can use setCurrentState
instead of deprecated markState
.您可以使用
setCurrentState
而不是已弃用的markState
。 Or you can handleLifecycleEvent
with appropriate event或者您可以使用适当的事件处理
handleLifecycleEvent
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.