Robotium - 检测从屏幕上绘制的对象

时间:2012-12-03 11:10:59

标签: android robotium

所以我上周对我的Android应用程序进行了更改,无意中在屏幕外部绘制了一些按钮。

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

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

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

4 个答案:

答案 0 :(得分: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());

<强> LocationOnScreen

可见性并不总是足以检查屏幕上是否有可见内容。从屏幕上拉出或宽度为负时可以看到某些东西。验证您是否可以使用the getLocationOnScreen() method。它将返回屏幕上视图的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);

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

答案 1 :(得分:1)

如果您尝试单击屏幕上未绘制/可见的按钮,Robotium将无法通过测试用例。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

Robotium可以按下屏幕上的按钮,但根据您搜索按钮的方式,它可能会或可能找不到它。混淆吧?

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