Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓浓咖啡onData搭配doesNotExist_Android_Android Espresso - Fatal编程技术网

Android 安卓浓咖啡onData搭配doesNotExist

Android 安卓浓咖啡onData搭配doesNotExist,android,android-espresso,Android,Android Espresso,我正在尝试验证列表视图是否不包含特定项。以下是我使用的代码: onData(allOf(is(instanceOf(Contact.class)), is(withContactItemName(is("TestName"))))) .check(doesNotExist()); 当名称存在时,我正确地得到一个错误,因为检查(doesNotExist())。当名称不存在时,我得到以下错误,因为allOf(…)与任何内容都不匹配: Caused by: java.lang.Runti

我正在尝试验证
列表视图
是否不包含特定项。以下是我使用的代码:

onData(allOf(is(instanceOf(Contact.class)), is(withContactItemName(is("TestName")))))
      .check(doesNotExist());
当名称存在时,我正确地得到一个错误,因为
检查(doesNotExist())
。当名称不存在时,我得到以下错误,因为
allOf(…)
与任何内容都不匹配:

Caused by: java.lang.RuntimeException: No data found matching: 
(is an instance of layer.sdk.contacts.Contact and is with contact item name:
is "TestName")
我如何获得像onData(…).check(doesNotExist())这样的功能

编辑:


通过使用try/catch并检查事件的getCause(),我遇到了一个可怕的问题,无法获得我想要的功能。我想用一种好的技术来代替它。

根据浓缩咖啡样本,您不能使用
onData(…)
来检查适配器中是否不存在视图。看看这个-。阅读“断言数据项不在适配器中”部分。您必须将匹配器与查找AdapterView的
onView()
一起使用

基于以上链接中的浓缩咖啡样品:

  • 匹配器:

    private static Matcher<View> withAdaptedData(final Matcher<Object> dataMatcher) {
        return new TypeSafeMatcher<View>() {
    
            @Override
            public void describeTo(Description description) {
                description.appendText("with class name: ");
                dataMatcher.describeTo(description);
            }
    
            @Override
            public boolean matchesSafely(View view) {
                if (!(view instanceof AdapterView)) {
                    return false;
                }
    
                @SuppressWarnings("rawtypes")
                Adapter adapter = ((AdapterView) view).getAdapter();
                for (int i = 0; i < adapter.getCount(); i++) {
                    if (dataMatcher.matches(adapter.getItem(i))) {
                        return true;
                    }
                }
                return false;
            }
        };
    }
    
  • 还有一个建议-避免编写
    is(使用ContactItemName(is(“TestName”))
    在匹配程序中添加以下代码:

        public static Matcher<Object> withContactItemName(String itemText) {
            checkArgument( itemText != null );
            return withContactItemName(equalTo(itemText));
        }
    
    带有ContactItemName(String itemText)的公共静态匹配器{ checkArgument(itemText!=null); 返回ContactItemName(equalTo(itemText)); } 然后您将拥有更可读、更清晰的代码
    is(带有ContactItemName(“TestName”)

        public static Matcher<Object> withContactItemName(String itemText) {
            checkArgument( itemText != null );
            return withContactItemName(equalTo(itemText));
        }