繁体   English   中英

Robotium - 检测从屏幕上画出来的物体

[英]Robotium - detect objects drawn off screen

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

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

只是想知道 Robotium 会捕捉到这个还是按钮仍然可以“按下”。

我的问题是,鉴于上述情况,我运行 Robotium 测试以选择一个不再在屏幕内绘制/可见的按钮。 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());

屏幕位置

可见性并不总是足以检查屏幕上是否可见。 从屏幕上或负宽度绘制时可以看到某些内容。 验证您是否可以使用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);

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

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

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

Robotium 可以按下屏幕外的按钮,但取决于您搜索按钮的方式,它可能会也可能不会找到它。 混淆对吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM