[英]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)
一旦我在上述规则中将Activity
从SplashScreenActivity
更改为LoginActivity
。 Espresso很容易找到这个登录EditText
视图并且所有测试都通过了。
只需确保您将Espresso指向实际存在View
的正确Activity
/ Fragment
。
如果您尝试访问未显示的某些视图,您会看到此错误。 例如,您想单击某个按钮,但没有显示整个屏幕。
然后你可以简单地在动作周围使用try-catch
块。 它可以应用于Kakao
图书馆,我认为, Espresso
,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.