当前位置: 首页 > 知识库问答 >
问题:

Android-Espresso-点击基于自定义对象的listview条目

徐瀚
2023-03-14

浓缩咖啡用于自动测试我的应用程序

在Espresso文档中有一个长列表的示例。处理对象列表是我通常做的事情。到目前为止,尝试从地图到对象的许多选项都没有产生好的结果。

浓缩咖啡的文档说应该使用“on data”。所以,类似于:

onData( myObjectHasContent("my_item: 50")).perform(click());
onView(withId( R.id.selection_pos2)).check(matches(withText("50")));

我的问题(我认为它们对学习社区很有帮助):-你能为此写一个好的匹配器吗?-我们如何在“关于数据”中使用它?

什么情况?在屏幕上,我有一个对象列表视图,如下所示:

public class MyOjbect { 
    public String content; 
    public int    size; 
}

我用来填充已填充列表的适配器是:

public class MyObjectWithItemAndSizeAdapter extends ArrayAdapter<MyObjectWithItemAndSize> {
    private final Context context;
    private final List<MyObjectWithItemAndSize> values;
    ...
    @Override
    public View getView(int position, View concertView, ViewGroup parent) {
        View view = null;
        if (concertView != null) {
            view = (LinearLayout) concertView;
        } else {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate( R.layout.list_item, parent, false);
        } 
        TextView itemT = (TextView) view.findViewById( R.id.item_content);
        itemT.setText( values.get(position).item);
        TextView sizeT = (TextView) view.findViewById( R.id.item_size);
        sizeT.setText( "" + values.get(position).size);
        return view;
    }
 }

共有1个答案

廖诚
2023-03-14

赋予ondata()的匹配器必须与所需listviewadapter.getitem(int)返回的所需值匹配。

因此,在您的示例中,匹配器应该如下所示:

public static Matcher<Object> withContent(final String content) {
    return new BoundedMatcher<Object, MyObjectWithItemAndSize>(MyObjectWithItemAndSize.class) {
        @Override
        public boolean matchesSafely(MyObjectWithItemAndSize myObj) {
            return myObj.content.equals(content);
        }

        @Override
        public void describeTo(Description description) {
            description.appendText("with content '" + content + "'");
        }
    };
}
 类似资料:
  • 问题内容: 所以我有一个自定义ListView对象。列表项具有两个彼此叠放的textview,以及一个水平进度条,在我实际执行某项操作之前,我一直希望保持水平状态。最右边是一个复选框,仅在用户需要将更新下载到他们的数据库时才显示。通过将可见性设置为Visibility.GONE禁用复选框时,我可以单击列表项。当该复选框可见时,我无法单击列表中除复选框以外的任何内容。我已经进行了一些搜索,但没有找到

  • 问题内容: 我浏览了教程并进行了搜索,但仍然不明白该怎么做, 当扩展在我的android应用程序中创建自定义listView 时,此方法有效。因此,我无法完全按照需要编辑“自定义”列表视图。 我需要知道何时调用此方法以及参数的含义。 如果有人可以解释以下方法很好。谢谢 问题答案: getView() :如规范中所述,getView方法将数据显示在指定位置。因此,当您设置适配器并滚动时,将调用lis

  • 问题内容: 我有一个ListView,其行中应具有以下布局: 应该是静态的,但每隔几秒钟就会更改一次。 我通过填充,将其传递给并在每次数据更改时进行设置来实现它: 我的问题是我不知道如何以上述格式显示数据。 提前致谢。 问题答案: 将此添加到你的布局文件夹 使你的主要xml布局如下 这是你的适配器 你的Java活动

  • 我想在spring验证器中创建基于条件的验证。我有一个UserDTO类,因为有两个DTO类带有注释。 如果我传递isPrimary,那么它应该只验证primaryDTO bean,而忽略secondoryDTO验证。 请引导。 谢谢

  • 我在用任何逻辑建立我的模型。我创建了一个带有自定义发行版的代理群体,在其中我放入了一个选项列表。我提出了5个选项(类别):A、B、C、D和E,每个选项都有其各自的百分比。我想做的是代理去两个不同的服务的基础上的选项(类别)。我在模型中有一个selectOutput,但我不知道该把什么作为条件来实现这一点,也就是说,如果代理是a或B,那么我希望它转到service_1,如果它是C、D或E,我希望它们

  • 本文向大家介绍Android ListView的Item点击效果的定制,包括了Android ListView的Item点击效果的定制的使用技巧和注意事项,需要的朋友参考一下 Android ListView的Item点击效果的定制           前言:           对于listview Android开发的朋友都知道用的很多,网上关于Android ListView的Item点击特