gpt4 book ai didi

Android - espresso - 单击基于自定义对象的 ListView 条目

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:51:15 27 4
gpt4 key购买 nike

Espresso 用于自动测试我的应用程序。

编辑:您可以在下面找到一些答案!

如何点击(在自动 Espresso 测试脚本中)一长串自定义对象中的条目?

在 Espresso 文档中有一个 LongList 的示例。使用对象列表是我通常做的事情。到目前为止,尝试了许多从 Map 到 Object 的选项并没有产生好的结果。

Espresso 文档说应该使用“onData”。所以,像这样:

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

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

什么情况?在屏幕上,我有一个对象 ListView ,例如:

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;
}
}

最佳答案

提供给 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 + "'");
}
};
}

关于Android - espresso - 单击基于自定义对象的 ListView 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25358599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com