小编sJy*_*sJy的帖子

如何检查在Espresso UI自动化测试中启用/禁用MenuItem

我正在Espresso for 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);
    } 
}
Run Code Online (Sandbox Code Playgroud)

对于UI测试,我需要编写测试用例来检查是否MenuItem启用/禁用.

点击overflowmenu,

ViewInteraction actionMenuItemView = onView(
            allOf(withId(R.id.action_settings), withContentDescription("Settings"), isDisplayed()));
actionMenuItemView.perform(click());
Run Code Online (Sandbox Code Playgroud)

到目前为止,我试图检查断言的内容如下.

onView(allOf(withText("Cancel Order"), withId(R.id.cancel_order))).check(matches(not(isEnabled())));
Run Code Online (Sandbox Code Playgroud)

但这会引发NoMatchingViewException消息

NoMatchingViewException:层次结构中找不到匹配的视图:(带有text:是"Cancel Order",ID为:com.equinix.ecp.betatest:id/cancel_order)

所以我尝试将其更改为

onView(allOf(withText("Cancel Order"))).check(matches(not(isEnabled())));
Run Code Online (Sandbox Code Playgroud)

不知何故,这与视图匹配,但它不是MenuItem,而是MenuItem中的TextView,因为我设置setEnabled()为MenuItem,check()Assertion将不会按预期工作,因为它是一个TextView.

所以我的问题是如何编写Test以检查MenuItem的启用/禁用状态.

android menuitem android-espresso

6
推荐指数
1
解决办法
2248
查看次数

我们如何通过mvvmcross绑定在Android中的SearchView中输入的搜索文本

我正在开发Xamarin Android中的应用程序以及MvvmCross.MvvmCross有助于将布局中的视图属性直接绑定到ViewModel.对于EditText,我们可以绑定文本

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    local:MvxBind="Text Property" />
Run Code Online (Sandbox Code Playgroud)

我需要使用MvvmCross绑定SearchView文本.我尝试过Text如下,但它不起作用.

<SearchView     
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:queryHint="Customer name" 
    local:MvxBind="Text SearchString" />
Run Code Online (Sandbox Code Playgroud)

如何使用MvvmCross绑定SearchView文本?

android xamarin.android mvvmcross

4
推荐指数
1
解决办法
702
查看次数