Fragment中Listview项的测试用例

时间:2016-08-18 10:27:30

标签: android listview android-fragments runtime-error testcase

我有一个 Activity.java ,其中包含一些标签。每个选项卡代表不同的 Fragments 。一个标签菜单有一个列表视图,其中是从 API 调用中提取的。

现在,我如何为listview上的项目编写测试用例?

我尝试了以下代码:

onData(withId(R.id.navigation_menu)).check(matches(withText(R.string.log_out))) .perform(click());

此处, navigation_menu 是列表名称, log_out 是项目字符串的名称。但后来我收到以下错误:

  

android.support.test.espresso.NoMatchingViewException:层次结构中找不到匹配的视图

层次结构是:

  

HomeActivity.java - > TabAdapter.java - > MenuFragment.java - > MenuListAdapter.java

那么, listview 的测试用例应该是什么,它位于活动<的片段中/ em>?请帮助 !!

2 个答案:

答案 0 :(得分:0)

navigation_menu必须是一种可与onData()一起使用的可滚动视图,并且所有视图都必须在屏幕上显示(如果您的屏幕很小而且您必须滚动才能看到该视图 - &gt;这也意味着不可见

如果navigation_menu已经是一种可滚动视图。如果隐藏在屏幕上,您可以调用其他方法。例如:

 onData(withId(R.id.navigation_menu)).perform(scrollTo()).check(...)

答案 1 :(得分:-1)

我在一段时间内没有在Android中编码,所以请耐心等待。 为什么你指的是字符串而不是项目本身?

你应该引用项目本身的id而不是它的字符串

 public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_log_in) {
        Log.i(PRESS_TAG, "lOG IN");
        callLogInActivity(mainView);

    } else if (id == R.id.nav_settings) {
        Log.i(PRESS_TAG, " Settings");
        callSettingsActivity(mainView);}
    return true;
}

XML

   <item
            android:id="@+id/nav_settings"
            android:icon="@drawable/ic_menu_manage"
            android:title="@string/nav_settings_title" />