Как я могу протестировать Android View анимации endAction? - PullRequest
0 голосов
/ 11 ноября 2018
fun TextView.setTextWithFade(text: String, duration: Long = 300) {
    this.animate().alpha(0f).setDuration(duration).withEndAction {
        this.text = text
        this.animate().alpha(1f).setDuration(duration).start()
    }.start()
}

Здравствуйте, У меня есть простая функция расширения Kotlin для TextView, чтобы изменить текст с анимацией. В этой анимации есть три шага:

  1. Исчезает старый текст
  2. Изменить текст в TextView
  3. Исчезает текст обратно в

Каков наилучший способ написания модульного теста, который проверяет, был ли текст изменен после анимации затухания?

@Test
fun setTextWithFadeTest() {
    val context = ApplicationProvider.getApplicationContext<Context>()
    val textView = TextView(context)
    textView.text = "test1"
    textView.setTextWithFade("test2", duration = 10)

    val handler = Handler()
    handler.postDelayed({
        println("Text: ${textView.text}, alpha: ${textView.alpha}")
        assert(textView.text == "test2")
    }, 300)

    Robolectric.getForegroundThreadScheduler().advanceBy(300, TimeUnit.MILLISECONDS)
}

Это код, как я пытаюсь этого добиться. Этот обработчик печатает:

Текст: test1, альфа: 1.0

Похоже, анимация даже не началась.

...