相关疑难解决方法(0)

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
查看次数

FragmentScenario configuration - Binary XML file line, Error inflating class &lt;widget&gt; while testing with espresso

Inflating error while trying to use FragmentScenario with launchFragment and launchFragmentInContainer if using material component in XML.

android.view.InflateException: Binary XML file line #41: Binary XML file line #41: Error inflating class <widget class>
Caused by: android.view.InflateException: Binary XML file line #41: Error inflating class <widget class>
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
at android.view.LayoutInflater.createView(LayoutInflater.java:647)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
...
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:886)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1227)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1293)
at …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-espresso

4
推荐指数
1
解决办法
547
查看次数