我写UI自动化测试在咖啡为Android &跨为此,我还没有得到任何解决方案迄今的情景来。如何检查菜单项在咖啡UI自动化启用/禁用测试
在一个Fragment
,我有OptionsMenu
用一个单一的项目。 MenuItem
的状态根据API响应中的值设置。
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
menu.clear();
getActivity().getMenuInflater().inflate(R.menu.menu_cancel_order, menu);
MenuItem cancelMenuItem = menu.findItem(R.id.cancel_order);
if(something) { // something can be a boolean value from server
cancelMenuItem.setEnabled(true);
} else {
cancelMenuItem.setEnabled(false);
}
}
对于UI测试,我需要编写测试用例来检查这个MenuItem
是否启用/禁用。
对于点击overflowmenu,
ViewInteraction actionMenuItemView = onView(
allOf(withId(R.id.action_settings), withContentDescription("Settings"), isDisplayed()));
actionMenuItemView.perform(click());
到目前为止我曾尝试检查断言如下。
onView(allOf(withText("Cancel Order"), withId(R.id.cancel_order))).check(matches(not(isEnabled())));
但这触发NoMatchingViewException
有消息
NoMatchingViewException:在体系中没有的观点找到匹配:(与 文字:是 “取消订单”,并与ID: com.equinix.ecp.betatest :ID/cancel_order)
所以我试图将其更改为
onView(allOf(withText("Cancel Order"))).check(matches(not(isEnabled())));
不知怎的,这相匹配的观点,但它不是一个菜单项,但菜单项&内TextView的,因为我设置setEnabled()
到菜单项,check()
断言不会按预期工作,因为它是一个TextView
。
所以我的问题是怎么写的测试检查菜单项的启用/禁用状态。
你找到了一个解决方案?我有同样的情况。 – makovkastar
@makovkastar其实不是。但是我所做的就是,不是检查菜单项的启用/禁用,而是对菜单项执行单击操作,并检查下一页中的项是否不显示。因此,如果项目不显示,那就意味着没有执行点击操作,这意味着菜单被禁用。不完美,但现在这是我做的。等待完美的解决方案 – sJy