我刚开始使用机器人,尝试了第一个非常简单的测试,但是经历了一些我无法解释 /对我来说似乎没有逻辑的问题。

我在TABHOST内容部分中显示的每个活动上都有一个带有活动组和一个切换按钮的TABHOST。当我按“切换”按钮时,选项卡内容区域会更改为另一个活动(mtabhost.setcurrenttab(意图意图);)。每个活动都具有这样的切换按钮,总是带有标签“切换”。当我单击“秒活动”活动中的“切换”按钮时,它将切换回第一个(所有选项卡内容区域内)。

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

现在,手动效果很好,但是Robotium测试却没有。当我尝试单击第二个活动上的“切换”按钮时,我会收到一条错误消息“ 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.GetCurrentArtivity()”总是返回活动组的嵌入式活动,而不是外部的活动?独奏仍然可以访问外部活动的元素吗?但是,在上面的情况下,“切换”按钮始终是内部/嵌入式活动的一部分 - 如果这里很重要。

有帮助吗?

解决方案

刚从Robotium Dev获得了答复,这是一个将在Robotium 1.8中解决的问题。看 这里

其他提示

您可以使用这个:

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

或者:

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

相反,您可以选择由Android提供的JUNIT自动化本身。您可以轻松发送KeyEvents选择菜单选项并完成任务。

您需要做的就是在选择菜单选项的测试代码中创建JUNIT测试用例方法。遵循以下这些方法: -

  • 在测试方法中启动活动
  • 发送KeyEvent菜单单击到活动。显示菜单选项时,向上发送,向下,左和右键,以将重点放在选项上并发送KeyEvent DPAD中心。

希望这能解决您的问题。但是在此之前,您必须了解Android SDK中可用的Junit&Test框架。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top