1

因此,我上周对我的 Android 应用程序进行了更改,无意中将一些按钮绘制到了屏幕外。

我可以在 Eclipse 中看到屏幕外的对象,并且没有引发任何错误,但是当应用程序运行时,按钮不可见(屏幕外)。

只是想知道 Robotium 会抓住这个还是按钮仍然是“可按下的”。

我的问题是,鉴于上述情况,我运行 Robotium 测试以选择一个不再在屏幕内绘制/可见的按钮。Robotium 是否仍然能够选择按钮并通过测试,还是会因为按钮不再出现在屏幕上而失败?

4

4 回答 4

1

能见度

可见性选项通过如下所示的代码段进行断言。请注意,getVisibility 将返回一个从 0=VISIBLE 到 8=GONE 的整数,其中 4=INVISIBLE。更多信息请参阅Android API Javadoc for View

int expectedValue = 0; // 0=VISIBLE, 4=INVISIBLE, 8=GONE
assertEquals("Message when assert failed", expectedValue, 
    solo.getView(your.project.package.R.id.someViewId).getVisibility());

屏幕位置

可见性并不总是足以检查屏幕上是否可见某些内容。在从屏幕上绘制或具有负宽度时可以看到某些东西。要验证您是否可以使用getLocationOnScreen() 方法。它将返回屏幕上视图的 x 和 y 坐标(按此顺序)。一个例子:

int] location = new int[2]; // this will hold the x and y position
// retrieve coordinates
solo.getView(your.project.package.R.id.someViewId).getLocationOnScreen(location);
// and check if possitive or whatever fits your needs
assertTrue("Message when assert failed", location[0] >= 0 && location[1] >= 0);

这应该可以正确检测到您的屏幕外按钮。

于 2013-01-29T12:38:41.783 回答
1

如果您尝试单击屏幕上未绘制/不可见的按钮,Robotium 将使测试用例失败。

于 2013-01-30T09:44:08.760 回答
0

据我所知,如果按钮被绘制,即使它们不可见,您也可以按下它们。例如,您可以在只有某些部分可见的可滚动视图中按下按钮。对于robotium,重要的是可以在当前活动的视图中找到您想要单击的按钮(它以某种方式在内部遍历视图并在其所有子小部件中搜索小部件)。

于 2012-12-03T13:17:21.640 回答
0

Robotium 可以按下屏幕上的按钮,但取决于您搜索按钮的方式,它可能会或可能不会找到它。令人困惑对吗?

Robotium 内部有时会在返回视图之前检查它们的可见性,例如当您要求所有按钮时,但如果您使用不同的技术或 findById() 那么它实际上不会执行相同的检查。但是,您可以只使用 robotsium 内部的可见性检查来验证它是否可见!

于 2012-12-03T15:31:37.477 回答