Android UI unit-tests: 如何找到动态添加的复选框?
Android UI unit-tests: how to find dynamically added checkbox?
在我的 android 应用程序中,我有一个 ListView
自定义项目(由一个可点击的标题 + 一个没有文本的复选框组成)。这些项目是动态添加的。
如何使用 Espresso 或类似框架在我的单元测试中选中这些复选框之一?
我找不到如何获取对其中一个复选框的引用。由于它们是动态添加的,我无法通过 id 找到它们,就像我通常使用静态 .xml views.
您需要以编程方式设置复选框的 ID(请参阅此 answer and this)。
int checkBoxId = 200000; // global variable to count checkboxes
for (int i = 0; i < 1000; ++i) {
CheckBox box = new CheckBox(this);
box.setId(++checkBoxId);
}
然后像往常一样找到它们:
onView(withId(200003)).perform(click());
以下是我们在不更改应用程序代码的情况下的做法:
int indexOfItem = 1;
onData(anything()).inAdapterView(withId(R.id.listView))
.atPosition(indexOfItem)
.onChildView(withId(R.id.checkBox))
.perform(click());
在我的 android 应用程序中,我有一个 ListView
自定义项目(由一个可点击的标题 + 一个没有文本的复选框组成)。这些项目是动态添加的。
如何使用 Espresso 或类似框架在我的单元测试中选中这些复选框之一?
我找不到如何获取对其中一个复选框的引用。由于它们是动态添加的,我无法通过 id 找到它们,就像我通常使用静态 .xml views.
您需要以编程方式设置复选框的 ID(请参阅此 answer and this)。
int checkBoxId = 200000; // global variable to count checkboxes
for (int i = 0; i < 1000; ++i) {
CheckBox box = new CheckBox(this);
box.setId(++checkBoxId);
}
然后像往常一样找到它们:
onView(withId(200003)).perform(click());
以下是我们在不更改应用程序代码的情况下的做法:
int indexOfItem = 1;
onData(anything()).inAdapterView(withId(R.id.listView))
.atPosition(indexOfItem)
.onChildView(withId(R.id.checkBox))
.perform(click());