clickOnButton在Robotium中不起作用

时间:2011-05-08 20:41:23

标签: android robotium

我有一个非常简单的测试:点击一个按钮,然后在TextView中显示一条消息,显示按钮被点击的次数。测试看起来像这样:

@Smoke
public void testMessageIsUpdatedWhenButtonIsClicked() {
    _solo.clickOnButton(0);
    String displayedMessage = ((TextView) _solo.getView(R.id.messageTextView)).getText().toString();
    assertEquals("You clicked 1 times.", displayedMessage);
}

现在,当我运行测试时,断言失败,因为TextView仍然显示活动启动时的原始文本。看起来我为Button创建的OnClickListener没有被调用。

还有其他人看到过这个问题吗?

一个人可以做些什么来解决这个问题?

6 个答案:

答案 0 :(得分:4)

我遇到了类似的问题。在我的情况下,问题是键盘!由于键盘已打开,因此robotium看不到按钮:“确定”和“取消”。解决方案:隐藏键盘然后按下按钮。

solo.enterText(0, "Hello!");
        solo.goBack(); //hide the keyboard
        solo.clickOnButton("\u041E\u041A");

答案 1 :(得分:1)

我知道这已经过时了,但是我想发帖,因为它让我很头疼。

汤姆,你在评论中提到过:

  

我在测试项目的AndroidManifest.xml中添加了以下内容:<uses-sdk android:targetSdkVersion="10" />然后我将其添加到我的应用程序的AndroidManifest.xml中:<supports-screens android:anyDensity="true"/>仍然没有运气。我应该提交错误报告吗?

解决方案实际上是将<uses-sdk android:targetSdkVersion="10" />添加到您正在测试的应用中,而不是实际的测试应用。这一个单一的改变对我有用。现在,我可以像预期的那样使用solo.clickButton("button text");,而不必使用变通方法。

希望有所帮助

答案 2 :(得分:0)

我遇到了类似的问题。上面有一个带有“游戏”文本的按钮,我想在我的测试用例中点击它。经过大量的“独唱”实验。我找到了以下代码:

solo.waitForDialogToClose(10000);
solo.clickOnButton("Games");

我认为在我的案例中,问题是按钮在初始化之前被点击并分配了onClickListener。

答案 3 :(得分:0)

我经常发现使用

solo.clickOnText("buttonName"); 

而不是按钮似乎是一种更好的方法。机器人有时似乎有点击按钮的问题。如果您更喜欢使用按钮ID,那么我建议如下:

solo.waitForIdleSync();
solo.clickOnButton(R.id.whatever);

答案 4 :(得分:0)

使用solo单击按钮时。使用基于索引的点击而不是名称或搜索按钮。指数从0开始。

solo.clickOnButton(1);

单击点击最适合索引

答案 5 :(得分:-1)

我有类似的问题。不幸的是我无法强制单独按下按钮。但是使用adroid.test.TouchUtils解决了我的问题:

Button button = solo.getButton( 0 );
TouchUtils.clickView( this, button );

希望它有所帮助。