gpt4 book ai didi

Android Espresso onData 奇怪的行为

转载 作者:行者123 更新时间:2023-11-29 01:35:17 25 4
gpt4 key购买 nike

我有一个 ActivityListView (id: android.R.id.list)。 ListView 显示来自自定义适配器的信息,我想使用 Espresso 单击特定项目中的特定 View :我想单击 ID 为 R.id.continueButton< 的 View /em> 在显示来自对象 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 尝试点击它时,它会点击操作栏...

关于Android Espresso onData 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28611842/

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