我正在测试我的活动中的片段的启动,所以在执行点击按钮以启动片段之后,我在启动片段内的视图上测试了现有的文本,但是测试失败了该片段在我的手机上启动,甚至在视图层次结构中显示文本存在:
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失败了这个测试,是因为它不等待片段的发布?
顺便说一句,我关闭了动画。
答案 0 :(得分:5)
espresso withText方法匹配所有字符串相等。
在您的情况下,如果字符串以字符串结尾,则需要匹配。
您的代码应为:
onView(withText(endsWith("photo de profil"))).check(matches(isDisplayed()));
这里有更多示例:http://qathread.blogspot.com.br/2014/01/discovering-espresso-for-android.html
答案 1 :(得分:0)
我在做什么:
@Rule
@JvmField
var mActivityTestRule = ActivityTestRule(SplashScreenActivity::class.java)
由于此规则, Espresso库正在EditText
上搜索登录SplashScreenActivity
视图。可悲的是,该登录EditText
视图实际上出现在LoginActivity
中,结果是测试用例因上述错误而失败。
我为使一切正常工作所做的事情:
@Rule
@JvmField
var mActivityTestRule = ActivityTestRule(LoginActivity::class.java)
按照上述规则,我将Activity
从SplashScreenActivity
更改为LoginActivity
。 Espresso 轻松找到了此登录EditText
视图并通过了所有测试。
只需确保将 Espresso 指向正确的Activity
所在的正确Fragment
/ View
。