代码之家  ›  专栏  ›  技术社区  ›  maniek099

在Android Espresso框架中检查DatePicker日历值

  •  11
  • maniek099  · 技术社区  · 7 年前

    DatePicker 控件和一些文本输入和按钮。我想通过浓缩咖啡测试一些场景:

    1. 将日期设置为第一个 日期选择器 .
    2. 日期选择器
    3. 第二次检查日期

    在第三步中,我想做一些类似的事情 onView(withId(R.id.end_date_picker)).check(matches(withText("25-01-2017"))); .我可以用什么代替 withText 要检查日期选择器日历/日期值?谢谢你的帮助。

    1 回复  |  直到 7 年前
        1
  •  18
  •   stamanuel    7 年前

    要实现你想要的,你需要两件事:

    为了给日期选取器设置日期,最好的方法是利用浓缩咖啡的选取动作,我写过关于它们的文章 here here ,但将从那里复制我的答案的一些部分:

    最简单的方法是利用 PickerActions.setDate

    onView(withId(R.id.start_date_picker)).perform(PickerActions.setDate(2017, 6, 30));
    

    要使其正常工作,您必须添加 com.android.support.test.espresso:espresso-contrib

    对于第二部分,要检查日期选择器的日期,我认为必须使用自定义匹配器。

    您可以将此方法添加到代码中:

    public static Matcher<View> matchesDate(final int year, final int month, final int day) {
        return new BoundedMatcher<View, DatePicker>(DatePicker.class) {
    
            @Override
            public void describeTo(Description description) {
                description.appendText("matches date:");
            }
    
            @Override
            protected boolean matchesSafely(DatePicker item) {
                return (year == item.getYear() && month == item.getMonth() && day == item.getDayOfMonth());
            }
        };
    }
    

    onView(withId(R.id.end_date_picker)).check(matches(matchesDate(2017, 6, 30)));