gpt4 book ai didi

android - 有没有办法在 Espresso 测试期间暂停和恢复 Activity ?

转载 作者:行者123 更新时间:2023-12-04 14:14:27 24 4
gpt4 key购买 nike

我想做的很简单,我只想测试我的 Activity 背后的 IllegalState( fragment 提交期间)逻辑。
我想暂停 Activity ,尝试提交一个 fragment ,然后断言我正在处理这个权利。

但似乎不可能在 Espresso 测试期间实际暂停然后恢复 Activity 。有没有办法在不启动其他 Activity 的情况下做到这一点?

最佳答案

Quintin 在 his answer 中是正确的指向ActivityScenario.moveToState(newState:)方法,但他缺少一些我希望在这里填写的细节。
首先,请注意 ActivityScenario.launch(activityClass:)方法不仅启动 Activity ,而且等待其生命周期状态转换完成。所以,除非你调用 Activity.finish()在您的 Activity 的生命周期事件方法中,您可以假设它在 RESUMED 中到 ActivityScenario.launch(activityClass:) 时的状态方法返回。
其次,一旦您的 Activity 启动并在 RESUMED状态,然后将其移回 STARTED状态实际上会导致您的 Activity 的 onPause()要调用的方法。同样,将 Activity 移回 CREATED状态,将导致其 onPause()onStop()要调用的方法。
第三,一旦您将 Activity 移回 CREATEDSTARTED状态,您必须将其移至 RESUMED状态,然后才能对其执行 View 断言和 View 操作,否则您的测试方法将抛出 NoActivityResumedException .
以上所有内容都总结在以下测试方法中:

@Test
fun moving_activity_back_to_started_state_and_then_forward_to_resumed_state() {
val activityScenario = ActivityScenario.launch(MyActivity::class.java)

// the activity's onCreate, onStart and onResume methods have been called at this point

activityScenario.moveToState(Lifecycle.State.STARTED)

// the activity's onPause method has been called at this point

activityScenario.moveToState(Lifecycle.State.RESUMED)

// the activity's onResume method has been called at this point
}
要查看实际情况,请参阅 this示例应用程序和 this尤其是考试类。

关于android - 有没有办法在 Espresso 测试期间暂停和恢复 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61814729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com