Joj*_*oCT 6 android android-testing android-espresso
有没有办法以编程方式测试活动的保存和恢复状态代码?我的意思是这样做:
如何测试为保存/恢复活动的生命周期而构建的代码?但是以自动化的方式.
我已经测试了activity.recreate()几乎我正在搜索的方法,但事实上它并没有重置我的活动字段,就像我正在杀死进程一样.因此即使我没有在我的onCreate方法中实现恢复功能,我的测试也可以通过(因为我的字段没有变化......).
我目前正在玩Espresso v2,我想知道这是否可能通过玩InstrumentationRegistry.getInstrumentation()?
解决方案是使用activity.recreate()方法但不要忘记通过等待空闲状态的断言来遵循这一点.我第一次尝试的问题是我写的测试是这样的:
instrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
activity.recreate();
}
});
assertThat(activityTestRule.getActivity().getXXX()).isNull();
Run Code Online (Sandbox Code Playgroud)
在XXX没有实现保存/恢复状态处理的情况下,我期望为null的字段在哪里.但事实并非如此,因为我的断言并没有等待娱乐任务完成.
所以在我的情况下,当我简单地添加一个完成工作的espresso断言时,我的问题就解决了,例如通过验证显示该XXX字段的TextView 是空的.
最后,由于Espresso提供的UI线程同步,我的测试可以在我的活动保存/恢复状态缺失实现上断言,如下所示:
instrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
activity.recreate();
}
});
onView(withText("a string depending on XXX value")).check(doesNotExist());
Run Code Online (Sandbox Code Playgroud)
请注意,建议的轮换解决方案也可以完成工作,但可能比activity.recreate()我们只想测试活动生命周期要慢得多.在我的情况下,这是不相关的,因为我的活动没有实现横向.
| 归档时间: |
|
| 查看次数: |
2224 次 |
| 最近记录: |