0

I writing test cases for Android apps using Robotium. One of my test cases opens a file (e.g., an image) which causes the opening of another activity from another app to display the image.

This far, everythings fine. However, afterwards, I want to get back to my activity under test, as I want to test further functionality.

How can I acchieve this?

Neither

solo.sendKey(android.view.KeyEvent.KEYCODE_BACK);

nor

solo.goBack();

nor

solo.getCurrentActivity().onBackPressed()

works because the activity displaying the image belongs to another app and thus, to another process.

Anything else I could try?

4

4 回答 4

4

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

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

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

这样,您就可以将代码覆盖在测试中,而不会出现测试其他人代码的问题。

于 2012-06-22T10:58:45.807 回答
1

对我来说,这可以完成工作:

mSolo.goBackToActivity("MainActivity");

在我的例子中,我在浏览器中打开一个 URL,然后我回到被测活动。唯一的缺点(到目前为止)是其他应用程序仍保留在后台堆栈中,但可能也有解决此问题的方法。

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

于 2015-04-24T08:52:14.463 回答
1

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

..... mSolo.finishOpenedActivities(); 设置活动(空);mSolo = new Solo(mInstrumentation, getActivity()); ……

于 2014-03-12T10:51:59.723 回答
0

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

adb shell am force-stop <package-of-started-app>

然后你回到之前的活动。

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

于 2014-04-30T08:43:45.480 回答