因此,我上周对Android应用进行了更改,并且无意中在屏幕外部绘制了一些按钮。Robotium - 检测从屏幕上移出的物体
我能好起来看看在Eclipse中关闭屏幕的对象和被掀翻没有错误,但是当应用程序运行的按钮不可见(关闭屏幕)。
只是想将Robotium赶上这或将按钮仍然是“可压”。
我的问题是,鉴于上述情况,我运行一个Robotium测试来选择不再里面的画面绘制/可见的按钮。 Robotium仍然能够选择按钮并通过测试,否则,由于该按钮不再显示在屏幕上,它会失败吗?
因此,我上周对Android应用进行了更改,并且无意中在屏幕外部绘制了一些按钮。Robotium - 检测从屏幕上移出的物体
我能好起来看看在Eclipse中关闭屏幕的对象和被掀翻没有错误,但是当应用程序运行的按钮不可见(关闭屏幕)。
只是想将Robotium赶上这或将按钮仍然是“可压”。
我的问题是,鉴于上述情况,我运行一个Robotium测试来选择不再里面的画面绘制/可见的按钮。 Robotium仍然能够选择按钮并通过测试,否则,由于该按钮不再显示在屏幕上,它会失败吗?
据我所知,你可以按下按钮,如果他们被吸引,即使他们是不可见的。例如,你可以在可滚动的视图中按下按钮,其中只有一些部分是可见的。 Robotium的重要之处在于可以在当前活动的视图中找到想要单击其中的按钮(它以某种方式在内部遍历视图并在其子小部件中搜索小部件)。
Robotium可以按按钮关闭屏幕,但要看你如何搜索按钮,它可能会或可能不会发现它。混淆权利?
Robotium内部有时会在返回视图之前检查视图的可见性,例如,当你询问所有的按钮时,但如果你使用不同的技术或findById(),那么它实际上不会执行相同的检查。但是,您可以仅使用robotium内的可见性检查来验证它是否可见!
能见度
能见度选项断言中包含一个片段。请注意,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);
这应该正确地检测到您的屏幕上的按钮。
如果你试着点击未绘制/可视屏幕上的按钮,Robotium将失败的测试用例。
好的,所以我需要编写检查来查看按钮x,y坐标是否在屏幕边界内? – conor