2

我有一个非常简单的测试:单击一个按钮,然后在 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 仍在显示 Activity 启动时的原始文本。我为 Button 创建的 OnClickListener 似乎没有被调用。

有没有其他人看到这个问题?

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

4

6 回答 6

4

我遇到了类似的问题。就我而言,问题是键盘!因为键盘已打开,robotium 看不到按钮: "OK" 和 "Cancel" 。解决方法:隐藏键盘,然后按下按钮。

solo.enterText(0, "Hello!");
        solo.goBack(); //hide the keyboard
        solo.clickOnButton("\u041E\u041A");
于 2011-11-17T08:05:42.020 回答
1

我知道这是旧的,但我想发布,因为它让我很头疼。

汤姆,您在评论中提到:

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

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

希望能帮助到你

于 2013-06-04T20:49:22.843 回答
0

我经常发现使用

solo.clickOnText("buttonName"); 

而不是放在按钮上似乎是更好的方法。Robotium 有时似乎在单击按钮时出现问题。如果您更喜欢使用按钮 ID,那么我建议如下:

solo.waitForIdleSync();
solo.clickOnButton(R.id.whatever);
于 2012-02-14T09:51:36.473 回答
0

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

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

我认为在我的情况下的问题是该按钮甚至在它被初始化并分配 onClickListener 之前就被点击了。

于 2011-08-02T13:26:49.530 回答
0

当您使用独奏单击按钮时。使用基于索引的点击而不是名称或搜索按钮。索引从 0 开始。

solo.clickOnButton(1);

单独点击最适合使用索引

于 2015-03-12T09:46:20.453 回答
-1

我有一个类似的问题。不幸的是,我无法强制独奏正确单击按钮。但是使用 adroid.test.TouchUtils 解决了我的问题:

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

希望能帮助到你。

于 2014-11-24T21:01:44.793 回答