Android Espresso检查选择的微调文本

时间:2015-07-15 03:11:00

标签: android android-espresso

我在Espresso测试中有这段代码

    onView(withId(R.id.src))
            .perform(click());

    onData(hasToString(startsWith("CCD")))
            .perform(click());

   onView(withId(R.id.src))
           .check(matches(withText(containsString("CCD"))));

我尝试做的是点击Spinner中的项目并检查它是否确实在Spinner中选中。

但我收到此错误:

  

android.support.test.espresso.base.DefaultFailureHandler $ AssertionFailedWithCauseError:' with text:包含" CCD"'的字符串与所选视图不匹配。   预期:带文字:包含" CCD"   得到:" AppCompatSpinner {id = 2131558533,res-name = src,visibility = VISIBLE,width = 528,height = 163,has-focus = false,has-focusable = true,has-window-focus = true, is-clickable = true,is-enabled = true,is-focused = false,is-focusable = true,is-layout-requested = false,is-selected = false,root-is-layout-requested = false,has- input-connection = false,x = 0.0,y = 0.0,child-count = 1}"

3 个答案:

答案 0 :(得分:60)

withText()替换为withSpinnerText()

onView(withId(spinnerId)).perform(click());
onData(allOf(is(instanceOf(String.class)), is(selectionText))).perform(click());
onView(withId(spinnerId)).check(matches(withSpinnerText(containsString(selectionText))));

参考:https://code.google.com/p/android-test-kit/issues/detail?id=85

答案 1 :(得分:5)

对我来说非常简单的解决方案.....不使用matcher for CustomSpinner

    onView(withId(R.id.custom_spinner)).perform(click());
 onData(anything()).atPosition(1).perform(click());
 onView(withId(R.id.custom_spinner)).check(matches(withSpinnerText(containsString("yourstring"))));

答案 2 :(得分:3)

对于自定义适配器,我要创建一个自定义匹配器:

 onView(withId(R.id.spinner)).perform(click());
 onData(allOf(is(instanceOf(YourCustomClass.class)), withMyValue("Open"))).perform(click());


public static <T> Matcher<T> withMyValue(final String name) {
    return new BaseMatcher<T>() {
        @Override
        public boolean matches(Object item) {
            return item.toString().equals(name);
        }

        @Override
        public void describeTo(Description description) {

        }
    };
}

然后,您必须在自定义类上覆盖toString()方法。