Max*_*ane 6 android kotlin android-espresso
我想做的非常简单,我只想测试我的活动背后的 IllegalState (在片段提交期间)逻辑。我想暂停活动,尝试提交一个片段,然后断言我处理得正确。
但在 Espresso 测试期间似乎不可能真正暂停然后恢复活动。有没有办法在不启动其他活动的情况下做到这一点?
Quintin 在他的回答中正确地指出了ActivityScenario.moveToState(newState:)方法,但他遗漏了一些我希望在这里填写的细节。
首先,请注意ActivityScenario.launch(activityClass:)方法不仅启动 Activity,而且等待其生命周期状态转换完成。因此,除非您在 Activity 的生命周期事件方法中调用Activity.finish(),否则您可以假设在ActivityScenario.launch(activityClass:)方法返回时它处于RESUMED状态。
其次,一旦您的 Activity 启动并处于RESUMED状态,那么将其移回STARTED状态实际上会导致您的 Activity 的onPause()方法被调用。同样,将活动移回CREATED状态将导致调用其onPause()和onStop()方法。
第三,一旦您将活动移回CREATED或STARTED状态,您必须先将其移至RESUMED状态,然后才能对其执行视图断言和视图操作,否则您的测试方法将抛出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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2603 次 |
| 最近记录: |