4

我使用Robotium作为我的 Android 应用程序的 Junit 测试库。我写了一些效果很好的测试。但是当我尝试为原生 ActionBarUp/Home button click编写测试时,它失败了。

我的测试代码很简单:

Solo solo = new Solo(getInstrumentation(), getActivity());
...
solo.clickOnActionBarHomeButton(); // I expected it will click the Up/Home button of ActionBar

我希望上面的代码会单击本机 ActionBar 的 Up/Home 按钮,但它失败了,操作栏上什么也没有发生。为什么??

PS我使用的是 Android 4.2.1 设备。

4

3 回答 3

5

我使用这个功能:

public void clickOnActionBarHomeButton(Solo solo) {
    View homeView = solo.getView(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home : R.id.home);
    solo.clickOnView(homeView);
}

也许这不是一个完美的决定,但它确实有效。

于 2014-04-18T08:40:09.187 回答
1

在我们的应用程序Home按钮中最终调用NavUtils.navigateUpFromSameTask. 使用时

solo.clickOnActionBarHomeButton();

单击Home按钮,它不起作用。但是,我注意到solo.clickOnScreen单击Home按钮可靠。所以我们用这个方法代替solo.clickOnActionBarHomeButton

protected void clickOnHome() {
    solo.clickOnScreen(50, 50); //usually hits Home button
}
于 2014-12-25T13:30:39.307 回答
0

您可以使用以下代码单击 Up/Home 按钮(即活动中的第一个 ImageButton 元素):

solo.clickOnImageButton(0);
instrumentation.waitForIdleSync();
于 2015-12-10T14:05:06.660 回答