相关疑难解决方法(0)

活动永远不会变成请求的状态“[DESTROYED、RESUMED、STARTED、CREATED]”(最后一个生命周期转换=“PRE_ON_CREATE”)

这不是一个重复的问题。
我已经看过类似的问题。我已经添加了我上次提到的问题。

我的问题是测试执行了,但我必须为每个测试手动打开应用程序。

截屏

你可以看到我已经等了18秒才打开应用程序。它会等到我手动打开应用程序,或者在超时后显示此错误。

活动永远不会变成请求的状态“[DESTROYED、RESUMED、STARTED、CREATED]”(最后一个生命周期转换=“PRE_ON_CREATE”)

这篇文章中,我认为问题出在我正在使用的设备上Redmi Note 5
disabled animations也有这个MIUI optimization选择。

感谢您提供在小米设备上自动运行测试的帮助。

手动运行自动化 UI 测试没有意义。

更新 1
它仅针对启动器/主要活动执行。
它不适用于其他活动。

更新 2
我也碰巧有一台 Redmi 4。测试在该设备上按预期工作,无需任何代码更改。

提到的SO问题

以及相关问题,

添加代码片段和依赖项供任何想要查看的人使用,

测试代码

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 …
Run Code Online (Sandbox Code Playgroud)

android android-espresso xiaomi

14
推荐指数
3
解决办法
6840
查看次数

AndroidX.Test ActivityScenario:java.lang.AssertionError:Activity 永远不会变成请求状态“[RESUMED]”(最后一个生命周期转换 =“STOPPED”)

ActivityScenario 替代了 Robolectric 中的 ActivityController 和 ATSL 中的 ActivityTestRule。

从 ATSL 重构到 AndroidX 测试时,我使用此代码在每次浓缩咖啡测试之前启动我的 IndexActivity。

    @Before
public void launchActivity() {
    ActivityScenario<IndexActivity> scenario = ActivityScenario.launch(IndexActivity.class);
}
Run Code Online (Sandbox Code Playgroud)

但是,我的测试有 80-90% 的时间会停止并抛出此错误。

java.lang.AssertionError:Activity 永远不会成为请求状态“[RESUMED]”(最后一个生命周期转换 =“STOPPED”)

在尝试进行故障排除时,我将上述内容更改为:

@Before
public void launchActivity() {
    ActivityScenario<IndexActivity> scenario = ActivityScenario.launch(IndexActivity.class);
    scenario.moveToState(Lifecycle.State.RESUMED);
}
Run Code Online (Sandbox Code Playgroud)

但是,我现在 100% 的时间都会遇到相同的错误。

根据文档,我不确定为什么会发生这种情况。

我正在使用 AndroidX Test Orchestrator 并在带有 Api 28 的模拟器上进行测试

完整的 StackTrace 测试在这里:

10:54:42 V/InstrumentationResultParser: java.lang.AssertionError: Activity never becomes requested state "[RESUMED]" (last lifecycle transition = "STOPPED")
10:54:42 V/InstrumentationResultParser: at androidx.test.core.app.ActivityScenario.waitForActivityToBecomeAnyOf(ActivityScenario.java:228)
10:54:42 V/InstrumentationResultParser: at androidx.test.core.app.ActivityScenario.moveToState(ActivityScenario.java:368) …
Run Code Online (Sandbox Code Playgroud)

android android-testing android-espresso androidx

7
推荐指数
1
解决办法
6070
查看次数

Android 检测抛出异常:活动永远不会变为请求状态“[RESUMED、DESTROYED、STARTED、CREATED]”

这是测试的最短变体:

\n
\xe2\x80\xa6\n@RunWith(AndroidJUnit4.class)\n@LargeTest\npublic class RunAllTest {\n  @Test\n  public void testShortRun() {\n\n    Context ctx = ApplicationProvider.getApplicationContext();\n    Intent intent = new Intent(ctx, SplashActivity.class);\n\n    ActivityScenario activityScenario = ActivityScenario.launch(intent);\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

它抛出一个异常:

\n
\n

java.lang.AssertionError:活动永远不会变成请求状态“[RESUMED、DESTROYED、STARTED、CREATED]”(最后一个生命周期转换 =“PRE_ON_CREATE\xe2\x80\x9d)

\n
\n

手机型号: 小米红米9

\n

MIUI版本:MIUI全局11.0.7稳定版11.0.7.0(QJCRUXM)

\n

安卓版本:10 QP1A.190711.020

\n

Android安全补丁级别:2020-09-01

\n

建立的解决方案/解决方法:

\n

你应该禁用(默认启用)

\n

设置->其他设置->开发者选项->开启MIUI优化

\n

java android xiaomi instrumented-test

5
推荐指数
0
解决办法
1856
查看次数