У меня есть модульный тест в kotlin, который выполняет longClick и затем проверяет, изменилась ли ширина представления или нет. Ширина должна измениться в течение полсекунды. Но независимо от того, как долго я его жду, полученная ширина не соответствует ожидаемой.
@Test
fun testLongClick() {
var initialWidth = 0
val listener = mock<TestInterface>(TestInterface::class.java)
view?.let {
it.findViewById<ImpulsesGroup>(R.id.test_default_impulse).getChildAt(2).setOnLongClickListener { child ->
(child as ImpulsesButton).onLongClick(child, it.findViewById<ImpulsesGroup>(R.id.test_default_impulse), listener)
}
initialWidth = it.findViewById<ImpulsesGroup>(R.id.test_default_impulse).width
assertThat("initial width", initialWidth, greaterThan(0))
runOnUiThread {
it.findViewById<ImpulsesGroup>(R.id.test_default_impulse).getChildAt(2).performLongClick()
}
await().atLeast(5, TimeUnit.SECONDS)
assertThat(view!!.findViewById<ImpulsesGroup>(R.id.test_default_impulse).width, Matchers.equalTo(3 * initialWidth))
}
}
Похоже, что окончательный assetThat () проверяется до завершения анимации!