我使用SherlockActionBar。我有3个菜单条目。第1个始终显示,其他文本没有图标,因此它们在菜单中。 我多次运行测试。第一次它工作得很好,但有时它因为
而失败04-19 16:43:14.326: D/Robotium(22310): 'Disable layers' not found. Have found: 'Layer_3'
04-19 16:43:15.247: I/TestRunner(22310): ----- begin exception -----
04-19 16:43:15.267: I/TestRunner(22310): junit.framework.AssertionFailedError: Text string: 'Disable layers' is not found!
04-19 16:43:15.267: I/TestRunner(22310): at junit.framework.Assert.fail(Assert.java:47)
04-19 16:43:15.267: I/TestRunner(22310): at junit.framework.Assert.assertTrue(Assert.java:20)
04-19 16:43:15.267: I/TestRunner(22310): at com.jayway.android.robotium.solo.Clicker.clickOnText(Clicker.java:339)
04-19 16:43:15.267: I/TestRunner(22310): at com.jayway.android.robotium.solo.Clicker.clickOnMenuItem(Clicker.java:199)
04-19 16:43:15.267: I/TestRunner(22310): at com.jayway.android.robotium.solo.Solo.clickOnMenuItem(Solo.java:763)
pressMenuItem产生相同的结果。 为什么在发布时无法访问菜单?菜单甚至没有打开。这很奇怪......
EDITED: 我用的是最后一个机器人4.1。 代码:
View imageBehind = solo.getView(R.id.image_view_behind);
View imageTop = solo.getView(R.id.image_view_top);
solo.clickOnMenuItem(solo.getString(R.string.disable_sbl));
assertTrue(imageBehind.getVisibility() == View.GONE);
solo.clickOnMenuItem(solo.getString(R.string.disable_stl));
assertTrue(imageTop.getVisibility() == View.GONE);
solo.clickOnMenuItem(solo.getString(R.string.enable_sbl));
assertTrue(imageBehind.getVisibility() == View.VISIBLE);
solo.clickOnMenuItem(solo.getString(R.string.enable_stl));
assertTrue(imageTop.getVisibility() == View.VISIBLE);
答案 0 :(得分:1)
这是一个时间问题,非常普遍。菜单启动后,它会在随后的时间内消失。添加
solo.waitForText("Menu item");
之前
solo.clickOnMenuItem("Menu item");
可能会解决问题。但我认为你需要为所有点击操作执行此操作。 让我知道。我也很想知道它是否解决了这个问题。
答案 1 :(得分:-1)
如果不是间歇性地工作,90%的情况会是时间问题,所以请在菜单项之间使用sleep api
solo.sleep(2000);