我正在编写一个UI测试用例(使用ActivityUnitTestCase),并希望检查在给定时间是否可以向用户显示View子类。我找到了 View#isShown()方法,该方法声称正是这样做 - 检查此元素及其所有父元素的可见性字段 - 但不知何故,它始终为所有元素返回“false” 。我会感激一些帮助。如果它更容易,我可以粘贴一些代码。
此外,我发现了 ViewAsserts#assertOnScreen(查看原点,查看视图)但它似乎也没做正确的事 - 总是返回true。我可能是错误的:assertOnScreen(viewImTesting.getRootView(),viewImTesting)?
谢谢, 扬
答案 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可能不是正确的方法,我想这是您根据您的问题尝试做的事情。
希望以上信息有用(并且正确)!