在Android测试中,如何检查是否显示了View?

时间:2011-02-07 15:03:12

标签: android unit-testing user-interface

我正在编写一个UI测试用例(使用ActivityUnitTestCase),并希望检查在给定时间是否可以向用户显示View子类。我找到了 View#isShown()方法,该方法声称正是这样做 - 检查此元素及其所有父元素的可见性字段 - 但不知何故,它始终为所有元素返回“false” 。我会感激一些帮助。如果它更容易,我可以粘贴一些代码。

此外,我发现了 ViewAsserts#assertOnScreen(查看原点,查看视图)但它似乎也没做正确的事 - 总是返回true。我可能是错误的:assertOnScreen(viewImTesting.getRootView(),viewImTesting)?

谢谢, 扬

3 个答案:

答案 0 :(得分:2)

我找到了明智的解决方法:只需针对查看#VISIBLE 查看#VISISIBLE 查看查看#getVisibility() VIEW#GONE

例如,这可能不起作用父视图不可见,但是这个视图的可见性设置为VISIBLE,但在大多数情况下它应该足够了。

答案 1 :(得分:0)

尝试使用

final View origin = activityImTesting.getWindow().getDecorView();
android.test.ViewAsserts.assertOnScreen(origin, viewImTesting);

答案 2 :(得分:0)

也许这太迟了?仅仅是为了触发@dtmilano和其他Android专家的一些回应,似乎在对可见性的解释“消失”方面存在一些差异。

虽然visibility = gone listed,就像完全没有添加视图一样,这个definition可能更接近事实。我意识到它实际上仍然在屏幕上有x和y坐标,但宽度和高度都是0.

当我深入研究ViewAsserts.java时,assertOnScreen()只关注原点中视图的y坐标,确保它大于0但不大于原点的高度。

总结:如果您正在测试视图的可见性,assertOnScreen可能不是正确的方法,我想这是您根据您的问题尝试做的事情。

希望以上信息有用(并且正确)!