有没有办法以编程方式测试活动的保存和恢复状态代码?我的意思是这样做:
How to test code built to save/restore Lifecycle of an Activity?但是以自动方式.
我已经测试了activity.recreate()方法,这几乎就是我正在搜索的内容,但事实上它并没有重置我的活动字段,就像我正在杀死进程一样.因此,即使我没有在onCreate方法中实现恢复功能,我的测试也可以通过(因为我的字段没有变化……).
我目前正在玩Espresso v2,我想知道是否可以通过使用InstrumentationRegistry.getInstrumentation()来实现这一点?
解决方法
解决方案是使用activity.recreate()方法但是不要忘记通过等待空闲状态的断言来执行此操作.
我第一次尝试的问题是我写的测试是这样的:
我第一次尝试的问题是我写的测试是这样的:
instrumentation.runOnMainSync(new Runnable() { @Override public void run() { activity.recreate(); } }); assertthat(activityTestRule.getActivity().getXXX()).isNull();
其中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());
请注意,建议的循环解决方案也可以执行此任务,但是当我们只想测试活动生命周期时,它可能比activity.recreate()慢得多.在我的情况下,这是不相关的,因为我的活动没有实现横向.
原文地址:https://www.jb51.cc/android/309602.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。