Как проверить наличие событий жизненного цикла компонентов архитектуры android? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть абстрактный класс, где я могу зарегистрировать событие жизненного цикла:

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)
    }

И в моем докладчике у меня есть следующее развлечение, когда я регистрирую наблюдателя:

fun onCreate(lifecycle: Lifecycle) {
    pollingService.contract = this
    pollingService.register(lifecycle)
}

Как я могу проверить свое onStart() и onStop() функции?

UPD: Записать следующую реализацию, но состояние marks устарело:

@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)
}
...