android - Activity 永远不会变为请求状态 "[DESTROYED, RESUMED, STARTED, CREATED]"(最后一个生命周期转换 = "PRE_ON_CREATE")

标签 android android-espresso xiaomi

这不是一个重复的问题。
我已经看过类似的问题。我已经添加了我最后提到的问题。
我的问题是测试执行,但我必须为每个测试手动打开应用程序。
screenshot
您可以看到我在打开应用程序之前已经等待了 18 秒。它等到我手动打开应用程序或超时后显示此错误。

Activity never becomes requested state "[DESTROYED, RESUMED, STARTED, CREATED]" (last lifecycle transition = "PRE_ON_CREATE")


来自 this post ,我认为问题出在设备上,因为我正在使用 Redmi Note 5 .
我有 disabled animations以及 MIUI optimization选项。
感谢您在小米设备上自动运行测试的任何帮助。
手动运行自动化 UI 测试毫无意义。
更新 1
它仅对启动器/主要 Activity 执行。
它不适用于其他 Activity 。
更新 2
我也碰巧有一个 Redmi 4。测试在该设备上按预期工作,没有任何代码更改。
引用 SO 问题
  • AndroidX.Test ActivityScenario: java.lang.AssertionError: Activity never becomes requested state "[RESUMED]" (last lifecycle transition = "STOPPED")
  • Android device doesn't launch activities on the screen while espresso testing
  • Activity never becomes requested state in UI Testing
  • java.lang.AssertionError: Activity never becomes requested state
  • Android instrumented test throws exception: Activity never becomes requested state "[RESUMED, DESTROYED, STARTED, CREATED]"
  • How do I fix this error java.lang.AssertionError: Activity never becomes requested state "[DESTROYED]" (last lifecycle transition = "RESUMED")

  • 及相关问题,
  • https://github.com/android/android-test/issues/143
  • https://github.com/android/android-test/issues/496

  • 为任何想要查看的人添加代码 fragment 和依赖项,
    测试码
    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"
    

    最佳答案

    这是权限问题。只允许自动启动 弹窗在您的 android 手机设置中使用此应用程序。
    然后启动USB调试并允许链启动用于测试应用程序。
    在小米11青春版上对我有用。

    关于android - Activity 永远不会变为请求状态 "[DESTROYED, RESUMED, STARTED, CREATED]"(最后一个生命周期转换 = "PRE_ON_CREATE"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68534534/

    相关文章:

    android - 值错误 : Linkname is too long

    android - 使用 RxLoader 进行 Espresso 测试

    android - 将模拟 Retrofit API 服务实例注入(inject) ActivityInstrumentTestCase2

    java - 务实地检测 MIUI/小米设备中软导航栏的可用性?

    android - -phonegap- Icomatic Topcoat 图标在 Chrome 中呈现,但在 Android 中不呈现

    android - 如何在不运行我的应用程序的情况下更改 Android 上的共享首选项(如 iOS 上的设置包)?

    android - 我可以在 Fragment 中实现启动画面吗?

    android - 使用 support.v4 ViewCompat 的 Espresso 在加载时抛出 NoSuchMethodError

    android - 如何在 MIUI 设备中打开管理应用程序电池使用设置

    android - 小米设备停止前台服务