Espresso - withEffectiveVisibility vs isDisplayed

时间:2015-07-06 04:57:52

标签: unit-testing testing junit4 android-espresso

isDisplayedwithEffectiveVisibility之间的区别是什么?

onView(withText("Much Dagger")).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));


onView(withText("Much Dagger")).check(matches(ViewMatchers.isDisplayed());

1 个答案:

答案 0 :(得分:23)

根据文件

  

返回匹配{@link View}的匹配器,其中“有效”可见性设置为给定值。有效可见性不仅考虑了视图的可见性值,还考虑了其​​祖先的可见性值。在View.VISIBLE的情况下,这意味着视图及其所有祖先具有visibility = VISIBLE。在GONE和INVISIBLE的情况下,情况正好相反 - 任何GONE或INVISIBLE父母都会让所有孩子都有其有效的知名度。

     

注意:

     

与名称所暗示的相反,视图可见性不会直接转化为视图是否显示在屏幕上(对此使用isDisplayed())。例如,视图及其所有祖先可以具有visibility = VISIBLE,但是视图可能需要滚动到以便实际对用户可见。除非您专门针对测试使用可见性值,否则请使用isDisplayed。

因此,如果用于验证视图是否可见,请使用 isDisplayed(),但对于其他验证,如果不可见并且已使用 withEffectiveVisibilty()