我刚开始使用 Robotium 并尝试了第一个非常简单的测试,但是遇到了一些我无法解释/对我来说似乎不合逻辑的问题。
我有一个带有 ActivityGroup 的 TabHost,并且在 tabhost 内容部分中显示的每个活动上都有一个切换按钮。当我按下切换按钮时,选项卡内容区域变为另一个活动(mTabHost.setCurrentTab(Intent intent);)。每个活动都有这样一个切换按钮,总是带有标签“切换”。当我单击秒活动上的切换按钮时,它将切换回第一个(全部在选项卡内容区域内)。
|-----------------|
| 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!
我在这里不明白的是:我正在检查带有“切换”标签的按钮是否存在并且是可点击的,但是,我收到一条错误消息,提示“无法点击此视图。”。在相应的当前活动中只有一个“切换”按钮。
与这个问题相关,我还有另一个小问题:当我使用 TabHost + ActivityGroup 时,“solo.getCurrentActivity()”是否总是返回 ActivityGroup 的嵌入活动,而不是外部活动?独奏仍然可以访问外部活动的元素吗?不过,在我上面的例子中,切换按钮始终是内部/嵌入式活动的一部分——以防万一。