繁体   English   中英

Android:Espresso,在层次结构中找不到匹配的视图

[英]Android: Espresso, No views in hierarchy found matching

我正在我的活动中测试一个片段的启动,所以在执行了一个将要启动该片段的按钮后,我测试了在启动的片段中视图中是否存在一个文本,但是即使该片段是,测试也失败了在我的手机上启动,甚至在视图层次结构中也显示文本存在:

View Hierarchy:

+--------->AppCompatTextView{id=2131886318, res-name=text3_textView, visibility=VISIBLE, width=768, height=68, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=695.0, text=Pour finaliser votre inscription nous avons besion
d'une photo de profil, input-type=0, ime-target=false, has-links=false}

测试在这里失败:

onView(withText("photo de profil")).check(matches(isDisplayed()));

我想知道为什么 espresso 没有通过这个测试,是因为它没有等待片段的启动吗?

顺便说一句,我关闭了动画。

espresso withText 方法匹配所有字符串都相等。

在您的情况下,您需要匹配字符串是否以您的字符串结尾。

你的代码应该是这样的:

onView(withText(endsWith("photo de profil"))).check(matches(isDisplayed()));

这里有更多示例: http : //qathread.blogspot.com.br/2014/01/discovering-espresso-for-android.html

我在做什么:

    @Rule
    @JvmField
    var mActivityTestRule = ActivityTestRule(SplashScreenActivity::class.java)

由于此规则, Espresso 库SplashScreenActivity上搜索登录EditText视图。 可悲的是,这个登录EditText视图实际上存在于LoginActivity ,结果测试用例因上述错误而失败。

我做了什么使一切正常:

    @Rule
    @JvmField
    var mActivityTestRule = ActivityTestRule(LoginActivity::class.java)

一旦我在上述规则中将ActivitySplashScreenActivity更改为LoginActivity Espresso很容易找到这个登录EditText视图并且所有测试都通过了。

只需确保您将Espresso指向实际存在View的正确Activity / Fragment

如果您尝试访问未显示的某些视图,您会看到此错误。 例如,您想单击某个按钮,但没有显示整个屏幕。

然后你可以简单地在动作周围使用try-catch块。 它可以应用于Kakao图书馆,我认为, Espresso

暂无
暂无

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

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