Это не повторяющийся вопрос.
Я уже рассматривал подобные вопросы. Я добавил вопросы, на которые я ссылался в последний раз.
Моя проблема в том, что тест выполняется, но мне приходится открывать приложение вручную для каждого теста.
Вы можете видеть, что я ждал 18 секунд, прежде чем открыть приложение. Он ждет, пока я не открою приложение вручную, или показывает эту ошибку по истечении тайм-аута.
Активность никогда не переходит в запрошенное состояние [DESTROYED, RESUMED, STARTED, CREATED] (последний переход жизненного цикла = PRE_ON_CREATE)
Из этот пост я предполагаю, что проблема с устройством, поскольку я использую Redmi Note 5
.
У меня есть disabled animations
, а также вариант MIUI optimization
.
Приветствуется любая помощь в автоматическом запуске тестов на устройствах Xiaomi.
Нет смысла запускать автоматические тесты пользовательского интерфейса вручную.
Обновление 1
Оно выполняется только для запуска / основного действия.
Оно не работает для других действий.
Обновление 2
У меня также есть Redmi 4. Тесты работают на этом устройстве, как и ожидалось, без каких-либо изменений кода.
Направленные SO-вопросы
- AndroidX.Test ActivityScenario: java.lang.AssertionError: Activity никогда не переходит в запрошенное состояние [RESUMED] (последний переход жизненного цикла = STOPPED)
- Устройство Android не запускает действия на экране во время тестирования эспрессо
- Активность никогда не становится запрашиваемой в тестировании пользовательского интерфейса
- java.lang.AssertionError: действие никогда не переходит в запрошенное состояние
- Android-инструментальный тест выдает исключение: действие никогда не становится запрошенным [ ВОЗОБНОВЛЕНО, УНИЧТОЖЕНО, ЗАПУЩЕНО, СОЗДАНО]
- Как исправить эту ошибку java.lang.AssertionError: активность никогда не переходит в запрошенное состояние [DESTROYED] (последний переход жизненного цикла = RESUMED)
И связанные с этим вопросы
- https://github.com/android/android-test/issues/143
- https://github.com/android/android-test/issues/496
Добавление фрагментов кода и зависимостей для всех, кто хочет посмотреть,
Проверочный код
import androidx.test.core.app.ActivityScenario
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4ClassRunner::class)
class MainActivityTest {
@Test
fun test_isActivityInView() {
val activityScenario = ActivityScenario.launch(MainActivity::class.java)
onView(withId(R.id.layout_activity_main)).check(matches(isDisplayed()))
}
}
Зависимости
testImplementation "junit:junit:4.13.2"
androidTestImplementation "androidx.test:core:1.4.0"
androidTestImplementation "androidx.test:runner:1.4.0"
androidTestImplementation "androidx.test:rules:1.4.0"
androidTestImplementation "androidx.test.ext:junit-ktx:1.1.3"
androidTestImplementation "androidx.test.espresso:espresso-core:3.4.0"