浓缩咖啡测试无法写入EditText文本框

4

因为像这样的代码,Espresso测试变得很烦人:

currentSailBoat = (SailBoat) boaterator.next();
ViewInteraction boatNameInteraction = onView(withId(R.id.txt_boat_name_edit));     
ViewInteraction boatNameInteraction = onView(withId(R.id.txt_boat_name_edit));
boatNameInteraction.perform(closeSoftKeyboard());
boatNameInteraction.perform(clearText());
boatNameInteraction.perform(typeText(currentSailBoat.getBoatName()));

出现了以下错误

运行时异常
原因:java.lang.RuntimeException: 操作不会执行,因为目标视图不符合以下一个或多个约束条件: (在屏幕上向用户显示且可以从类:class android.widget.EditText分配) 目标视图:“TextView{id=2131624096, res-name=txt_boat_name_edit, visibility=VISIBLE, width=135, height=37, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=true, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=true, editor-info=[inputType=0x10001 imeOptions=0x8000005 privateImeOptions=null actionLabel=null actionId=0 initialSelStart=0 initialSelEnd=0 initialCapsMode=0x0 hintText=null label=null packageName=null fieldId=0 fieldName=null extras=null ], x=8.0, y=8.0, text=Boat Name, input-type=65537, ime-target=true, has-links=false}”

我已经明白,由于我的 EditText 在屏幕上可见,问题在于我的 EditText 不是"可以从类: class android.widget.EditText 分配",所以我的问题是,什么意思是我的 EditText 不可分配到android.widget.EditText?如何使我的 EditText 可分配?


2
看起来 Espresso 找到了一个简单的 TextView,而不是 EditText,其 id 为 R.id.txt_boat_name_edit。 - nenick
谢谢,你是对的。看起来我混淆了TextView和EditText的名称,这可能会让我误认为一个是另一个,例如TextView被称为txt_boat_name_edit,而EditText被称为edit_txt_boat_name,所以导致了混淆。 - FalconBot
1个回答

0

无论如何,您可以像这样在编辑文本中编写:

boatNameInteraction.perform(replaceText(currentSailBoat.getBoatName()), closeSoftKeyboard());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接