2012-12-03 39 views
1

因此,我上周对Android应用进行了更改,并且无意中在屏幕外部绘制了一些按钮。Robotium - 检测从屏幕上移出的物体

我能好起来看看在Eclipse中关闭屏幕的对象和被掀翻没有错误,但是当应用程序运行的按钮不可见(关闭屏幕)。

只是想将Robotium赶上这或将按钮仍然是“可压”。

我的问题是,鉴于上述情况,我运行一个Robotium测试来选择不再里面的画面绘制/可见的按钮。 Robotium仍然能够选择按钮并通过测试,否则,由于该按钮不再显示在屏幕上,它会失败吗?

回答

0

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

+0

好的,所以我需要编写检查来查看按钮x,y坐标是否在屏幕边界内? – conor

0

Robotium可以按按钮关闭屏幕,但要看你如何搜索按钮,它可能会或可能不会发现它。混淆权利?

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

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

如果你试着点击未绘制/可视屏幕上的按钮,Robotium将失败的测试用例。