Robotium测试失败:junit.framework.AssertionFailedError:无法单击视图!

时间:2010-10-12 03:09:10

标签: android unit-testing testing robotium

我刚开始使用Robotium并尝试了第一个非常简单的测试,但遇到了一些我无法解释的问题/对我来说似乎不合逻辑。

我有一个带有ActivityGroup的TabHost,以及tabhost内容部分中显示的每个活动的切换按钮。当我按下切换按钮时,选项卡内容区域将更改为另一个活动(mTabHost.setCurrentTab(Intent intent);)。每个活动都有这样一个切换按钮,总是带有标签“Toggle”。当我点击秒活动上的切换按钮时,它将切换回第一个(全部位于选项卡内容区域内)。

|-----------------|
| TabHost |       | 
|-----------------| 
|                 | 
| Toggle-Button   | 
|                 | 
| (ActivityGroup: | 
| Activities      | 
| change in here) |
|                 | 
|-----------------|

现在,手动这一切都运行正常,但机器人测试没有。当我尝试单击第二个活动上的切换按钮时,出现错误消息“junit.framework.AssertionFailedError:无法单击视图!”

这是我的测试 - 非常简单和小:

    solo.sleep(5000);
    solo.waitForActivity("StartTabsActivity", 10000);

    solo.clickOnButton("Toggle");
    // this will swap the activity inside the tabhost content section

    solo.sleep(5000);
    solo.waitForActivity("StatusListActivity", 5000);

    solo.assertCurrentActivity("Expected StatusList activity", "StatusListActivity");

    LogUtils.logD("robotium: button label: " + solo.getButton(1).getText()); 
    // ... outputs: robotium: button label: Toggle

    LogUtils.logD("robotium: button clickable: " + solo.getButton(1).isClickable()); 
    // ... outputs: robotium: button clickable: true

    solo.clickOnButton("Toggle");   
    // ... throws: junit.framework.AssertionFailedError: View can not be clicked!

我在这里不明白:我正在检查带有“Toggle”标签的按钮是否存在且可点击,但是,我收到一条错误消息“此视图无法点击。”。并且相应的当前活动中只有一个“切换”按钮。

与此问题相关,我还有一个小问题: 当我使用TabHost + ActivityGroup时,“solo.getCurrentActivity()”是否总是返回ActivityGroup的嵌入式活动,而不是外部活动?可以独奏仍然可以访问外部活动的元素吗? 在我的上述情况中,切换按钮始终是内部/嵌入式活动的一部分 - 如果这里很重要的话。

3 个答案:

答案 0 :(得分:2)

刚收到robotium dev的回复,这是一个将在Robotium 1.8中修复的问题。见Here

答案 1 :(得分:1)

你可以使用这个:

solo.clickOnView(solo.getView("Toggle"))

或:

solo.clickOnView(solo.getView(R.id.B))

答案 2 :(得分:0)

相反,您可以选择Android提供的JUnit Automation。您可以轻松发送KeyEvents以选择菜单选项&完成任务。

您需要做的就是在测试代码中创建一个JUnit测试用例方法,该方法选择菜单选项。请遵循以下方法: -

  • 在测试方法中启动活动
  • 发送keyevent菜单点击活动。当显示菜单选项时,发送上,下,左和右;正确的关键事件,以关注选项&发送keyevent DPAD CENTER。

希望这能很好地解决您的问题。但在此之前,您必须了解一些JUnit& Android sdk中提供的测试框架..