我有一个 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>?请帮助 !!
答案 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" />