android – 使用withId匹配器时的Espresso NoMatchingViewException

前端之家收集整理的这篇文章主要介绍了android – 使用withId匹配器时的Espresso NoMatchingViewException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试编写一个简单的测试,只需单击主要活动中的MenuItem:
public class doTest extends ActivityInstrumentationTestCase2<doActivity> {

  public doTest() {
    super(doActivity.class);
  }

  @Override
  public void setUp() throws Exception {
    super.setUp();
    startActivity();

  }

  private void startActivity() {
    Intent intent = new Intent();
    setActivityIntent(intent);
    getActivity();
  }

  public void testOne() {
    Espresso.openContextualActionModeOverflowMenu();
    onView(withId(R.id.create_new)).perform(ViewActions.click());
  }

}

测试失败并显示“NoMatchingViewException”.如果我将onView行更改为:

onView(withText("Add new")).perform(ViewActions.click());

以下是活动的菜单xml:

<item
        android:id="@+id/create_new"
        android:title="Add new"
        tools:ignore="HardcodedText">
    </item>

测试工作.为什么matcher withText会找到视图而匹配器却找不到?

解决方法

是的,这就是Espresso的工作原理.这里的问题是,在Android中,表示菜单项的View没有菜单项的ID.因此onView(withId(X))无法找到View.我没有比使用withText()更好的建议.如果您有多个具有相同文本的视图,则使用层次结构进行区分工作.
原文链接:https://www.f2er.com/android/317397.html

猜你在找的Android相关文章