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, чтобы изменить текст с анимацией. В этой анимации есть три шага:
- Исчезает старый текст
- Изменить текст в TextView
- Исчезает текст обратно в
Каков наилучший способ написания модульного теста, который проверяет, был ли текст изменен после анимации затухания?
@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
Похоже, анимация даже не началась.