我使用Robotium为Android应用编写测试用例。我的一个测试用例会打开一个文件(例如图像),该文件会导致另一个应用程序打开另一个活动以显示图像。
到目前为止,一切都很好。但是,之后,我想回到我的测试活动,因为我想测试更多的功能。
我怎么能取消这个?
无论
solo.sendKey(android.view.KeyEvent.KEYCODE_BACK);
,也不
solo.goBack();
,也不
solo.getCurrentActivity().onBackPressed()
有效,因为显示图像的活动属于另一个应用程序,因此属于另一个进程。
我还能尝试其他什么?
答案 0 :(得分:4)
您正在进行验收测试是的,这是为了查看系统的用户界面是否有效。
您无需测试图像是否已打开(因为这超出了您的应用范围)。
然而建议您使用单独的单元测试来断言您调用正确的意图(或任何代码段)来打开此图像。
通过这种方式,您可以通过测试覆盖代码,而无需测试其他人代码的问题。
答案 1 :(得分:1)
我建议您重新启动目标活动以达到初始状态:
..... mSolo.finishOpenedActivities(); setActivity(NULL); mSolo = new Solo(mInstrumentation,getActivity()); ....
答案 2 :(得分:1)
对我来说,这可以胜任:
mSolo.goBackToActivity("MainActivity");
在我的情况下,我在浏览器中打开一个URL,然后我回到测试中的活动。唯一的缺点(到目前为止)是另一个应用程序仍然在后台,但也可能有一个修复。
我认为在提出这个问题后已添加此方法。
答案 3 :(得分:0)
如果您能够执行adb命令并且您知道此意图启动了哪个应用程序,则可以执行以下操作:
adb shell am force-stop <package-of-started-app>
然后你回到之前的活动。
注意:如果此意图有多个可能的应用程序并且显示应用程序选择对话框,则此方法无效。在这种情况下,您必须手动设置此意图的默认应用程序。