Android 机器人:回到测试中的活动

Android 机器人:回到测试中的活动,android,unit-testing,android-activity,robotium,Android,Unit Testing,Android Activity,Robotium,我正在使用Robotium为Android应用程序编写测试用例。我的一个测试用例打开一个文件(例如,一个图像),这会导致从另一个应用程序打开另一个活动来显示该图像 到目前为止,一切都很好。然而,之后,我想回到我的测试活动,因为我想测试进一步的功能 我怎样才能得到这个 都不是 solo.sendKey(android.view.KeyEvent.KEYCODE_BACK); 也不是 也不是 之所以有效,是因为显示图像的活动属于另一个应用程序,因此属于另一个进程 还有什么我可以尝试的吗?您正在进行

我正在使用Robotium为Android应用程序编写测试用例。我的一个测试用例打开一个文件(例如,一个图像),这会导致从另一个应用程序打开另一个活动来显示该图像

到目前为止,一切都很好。然而,之后,我想回到我的测试活动,因为我想测试进一步的功能

我怎样才能得到这个

都不是

solo.sendKey(android.view.KeyEvent.KEYCODE_BACK);
也不是

也不是

之所以有效,是因为显示图像的活动属于另一个应用程序,因此属于另一个进程


还有什么我可以尝试的吗?

您正在进行验收测试是的,这是为了查看系统的UI是否正常工作

您不需要测试图像是否已打开(因为这超出了您的应用程序范围)

但是建议使用单独的单元测试来断言您调用了正确的意图(或任何代码片段)来打开此映像


这样,您的代码就被测试所覆盖,而不存在测试其他人代码的问题。

您正在进行验收测试是的,这是为了确保系统的UI正常工作

您不需要测试图像是否已打开(因为这超出了您的应用程序范围)

但是建议使用单独的单元测试来断言您调用了正确的意图(或任何代码片段)来打开此映像


这样,测试就涵盖了代码,而不存在测试其他人代码的问题。

我建议您重新启动目标活动以达到初始状态:

..... mSolo.finishOpenedActivities(); setActivity(null); mSolo=新的独奏(minstruentation,getActivity()); ....

我建议您重新启动目标活动以达到初始状态:

..... mSolo.finishOpenedActivities(); setActivity(null); mSolo=新的独奏(minstruentation,getActivity()); ....

如果您能够执行adb命令,并且知道哪个应用程序是出于此目的启动的,则可以执行以下操作:

adb shell am force-stop <package-of-started-app>
adb外壳am强制停止
然后回到上一个活动


注意:如果有多个可能用于此目的的应用程序,并且显示应用程序选择对话框,则此操作不起作用。在这种情况下,您必须手动为此目的设置默认应用程序。

如果您能够执行adb命令,并且知道哪个应用程序是由此目的启动的,则可以执行以下操作:

adb shell am force-stop <package-of-started-app>
adb外壳am强制停止
然后回到上一个活动


注意:如果有多个可能用于此目的的应用程序,并且显示应用程序选择对话框,则此操作不起作用。在这种情况下,您必须手动为此目的设置默认应用程序。

对于我来说,这可以完成以下任务:

mSolo.goBackToActivity("MainActivity");
在我的例子中,我在浏览器中打开一个URL,然后返回测试中的活动。唯一的缺点(到目前为止)是另一个应用程序仍保留在backbackback中,但可能也有一个解决方案


我假设此方法是在提出此问题后添加的。

对我来说,这就是工作:

mSolo.goBackToActivity("MainActivity");
在我的例子中,我在浏览器中打开一个URL,然后返回测试中的活动。唯一的缺点(到目前为止)是另一个应用程序仍保留在backbackback中,但可能也有一个解决方案


我假设这个方法是在提出这个问题之后添加的。

实际上,我使用单元测试作为性能度量的工作负载。因此,出于某种原因,我确实想打开图像。我只是想知道,是否有可能使用robotium回到我的测试活动中。实际上,我所做的是,我使用单元测试作为性能度量的工作负载。因此,出于某种原因,我确实想打开图像。我只是想知道,是否有可能使用robotium返回我的测试活动。不,这是不可能的,除非你在其他应用上拥有Injectu事件权限,并且该应用已使用你的密钥库签名,否则这是不可能的。不,这是不可能的,除非您在其他应用程序上具有Injectu事件权限,并且应用程序已使用密钥库签名,否则不可能。