Android 表示 onData 奇怪的行为
Android Espresso onData strange behavior
我有一个 Activity 和 ListView (id: android.R.id.list). ListView 显示来自自定义适配器的信息,我想使用 Espresso 单击特定项目中的特定视图:我想单击 ID 为 [ 的视图=45=] 在显示来自对象 testOrder.
的信息的项目中
我的测试是:
onData(is(sameAsOrder(testOrder)))
.onChildView(withId(R.id.continueButton))
.inAdapterView(withId(android.R.id.list))
.perform(click());
其中 sameAsOrder() 是:
public static Matcher<Object> sameAsOrder(final Order order) {
assertNotNull(order);
return new BoundedMatcher<Object, Order>(Order.class) {
@Override
public boolean matchesSafely(Order myOrder) {
return myOrder.getId().equals(order.getId());
}
@Override
public void describeTo(Description description) {
description.appendText(" with id '" + order.getId() + "'");
}
};
}
我 运行 在我的设备上进行测试,但是当我从在线服务器加载我的订单对象时,点击发生在操作栏菜单上,就好像我 运行 Espresso 命令
openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
当使用虚拟数据时,它会点击正确的列表项。此外,在模拟器上使用虚拟数据时,它还会点击操作栏菜单。
如果我删除菜单,测试会通过而不会点击任何内容(据我所知...)
有人知道为什么会发生这种奇怪的行为吗?
谢谢!
我明白了!奇怪的行为与 onData() 无关。我正在使用操作栏覆盖模式。由于从我的设备到模拟器的屏幕尺寸不同,并且由于用于填充列表的数据不同(虚拟与从服务器加载),有时我想要单击的项目会出现在操作栏下方。当 Espresso 尝试点击它时,它会点击操作栏...
我有一个 Activity 和 ListView (id: android.R.id.list). ListView 显示来自自定义适配器的信息,我想使用 Espresso 单击特定项目中的特定视图:我想单击 ID 为 [ 的视图=45=] 在显示来自对象 testOrder.
的信息的项目中我的测试是:
onData(is(sameAsOrder(testOrder)))
.onChildView(withId(R.id.continueButton))
.inAdapterView(withId(android.R.id.list))
.perform(click());
其中 sameAsOrder() 是:
public static Matcher<Object> sameAsOrder(final Order order) {
assertNotNull(order);
return new BoundedMatcher<Object, Order>(Order.class) {
@Override
public boolean matchesSafely(Order myOrder) {
return myOrder.getId().equals(order.getId());
}
@Override
public void describeTo(Description description) {
description.appendText(" with id '" + order.getId() + "'");
}
};
}
我 运行 在我的设备上进行测试,但是当我从在线服务器加载我的订单对象时,点击发生在操作栏菜单上,就好像我 运行 Espresso 命令
openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
当使用虚拟数据时,它会点击正确的列表项。此外,在模拟器上使用虚拟数据时,它还会点击操作栏菜单。
如果我删除菜单,测试会通过而不会点击任何内容(据我所知...)
有人知道为什么会发生这种奇怪的行为吗?
谢谢!
我明白了!奇怪的行为与 onData() 无关。我正在使用操作栏覆盖模式。由于从我的设备到模拟器的屏幕尺寸不同,并且由于用于填充列表的数据不同(虚拟与从服务器加载),有时我想要单击的项目会出现在操作栏下方。当 Espresso 尝试点击它时,它会点击操作栏...