我刚开始使用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的嵌入式活动,而不是外部活动?可以独奏仍然可以访问外部活动的元素吗? 在我的上述情况中,切换按钮始终是内部/嵌入式活动的一部分 - 如果这里很重要的话。
答案 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测试用例方法,该方法选择菜单选项。请遵循以下方法: -
希望这能很好地解决您的问题。但在此之前,您必须了解一些JUnit& Android sdk中提供的测试框架..