我使用Robotium作为我的Android应用程序的Junit测试库。我写了一些效果很好的测试。但是当我尝试为native ActionBar的向上/主页按钮点击编写测试时,它失败了。
我的测试代码非常简单:
Solo solo = new Solo(getInstrumentation(), getActivity());
...
solo.clickOnActionBarHomeButton(); // I expected it will click the Up/Home button of ActionBar
我预计上面的代码会点击原生ActionBar的Up / Home按钮,但它失败了,动作栏上什么也没发生。为什么?
P.S。我使用的是Android 4.2.1设备。
答案 0 :(得分: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);
}
也许这不是一个完美的决定,但它确实有效。
答案 1 :(得分:1)
在我们的应用程序Home
按钮中最终调用NavUtils.navigateUpFromSameTask
。使用时
solo.clickOnActionBarHomeButton();
点击Home
按钮,它不起作用。但是,我注意到solo.clickOnScreen
点击Home
按钮可靠。因此,我们使用此方法代替solo.clickOnActionBarHomeButton
:
protected void clickOnHome() {
solo.clickOnScreen(50, 50); //usually hits Home button
}
答案 2 :(得分:0)
您可以使用以下代码单击向上/主页按钮(即活动中的第一个ImageButton元素):
solo.clickOnImageButton(0);
instrumentation.waitForIdleSync();