robotium pressMenuItem或clickOnMenuItem无法正常工作

时间:2013-04-19 13:48:53

标签: android unit-testing robotium

我使用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);

2 个答案:

答案 0 :(得分:1)

这是一个时间问题,非常普遍。菜单启动后,它会在随后的时间内消失。添加

    solo.waitForText("Menu item");

之前

    solo.clickOnMenuItem("Menu item");

可能会解决问题。但我认为你需要为所有点击操作执行此操作。 让我知道。我也很想知道它是否解决了这个问题。

答案 1 :(得分:-1)

如果不是间歇性地工作,90%的情况会是时间问题,所以请在菜单项之间使用sleep api

solo.sleep(2000);