Тест не удалось запустить до завершения. Причина: «Выполнение инструментария не удалось из-за« keyDispatchingTimedOut ». Проверьте устройство LogCat для деталей - PullRequest
0 голосов
/ 09 ноября 2018

Попытка проверить наличие диалогового окна во время инициализации базы данных. Процесс инициализации отмечен LocalBroadcasts.

Тестовый код.

private var listActivity: ListActivity? = null

@get:Rule
val activityTestRule = ActivityTestRule<ListActivity>(ListActivity::class.java)

@Before
fun setUp() {
    listActivity = activityTestRule.activity
}

@Test
fun testCheckActivityNotNull() {
    Assert.assertNotNull(listActivity)
}

/**
 * Test that we show a progress dialog while database init/migration is in process.
 * Test that we remove that on db init/migration success
 */
@UiThreadTest
@Test
fun testCheckProgressBarShownOnBroadcast() {
    Assert.assertNotNull(listActivity)

    var dbIntent = Intent()
    dbIntent.putExtra(DB_INIT_STATUS, DB_INIT_START)
    dbIntent.action = DB_INIT_STATUS
    LocalBroadcastManager.getInstance(ApplicationProvider.getApplicationContext()).sendBroadcast(dbIntent)

    Espresso.onView(withText(R.string.please_wait)).check(matches(isDisplayed()))
    Espresso.onView(withText(R.string.migrating_data)).check(matches(isDisplayed()))

    Thread.sleep(5000) // keeping a waiting time to check the view

    dbIntent = Intent()
    dbIntent.putExtra(DB_INIT_STATUS, DB_INIT_END)
    dbIntent.action = DB_INIT_STATUS
    LocalBroadcastManager.getInstance(ApplicationProvider.getApplicationContext()).sendBroadcast(dbIntent)

    Espresso.onView(withText(R.string.please_wait)).check(doesNotExist())
    Espresso.onView(withText(R.string.migrating_data)).check(doesNotExist())
}

Не могу разобрать большую часть logcat. Может поделиться, если нужно.

Я недавно перешел на androidx.test.rule.ActivityTestRule с ActivityInstrumentationTestCase2, и мои тестовые отметки testCheckProgressBarShownOnBroadcast. Работал нормально, когда я был на ActivityInstrumentationTestCase2

Ошибка keyDispatchTimeout заставляет меня чувствовать, что я не выполняю тест правильно.

Редактировать

'Instrumentation run failed due to 'keyDispatchingTimedOut'' выбрасывается при попытке взаимодействия с пользовательским интерфейсом. В противном случае, это идет к ANR. onView, вероятно, заходит в тупик.

...