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

我有一个带有两个DatePicker控件和一些文本输入和按钮的活动.我想通过espresso测试一些场景:

>将日期设置为第一个DatePicker.
>设置一些文本和单击按钮,触发我的业务逻辑并将日期设置为第二个DatePicker.
>检查第二个DatePicker的日期.

在第三步中,我想做一些像onView(withId(R.id.end_date_picker)).check(matches(withText(“25-01-2017”)));.我可以使用什么代替withText来检查DatePicker日历/日期值?谢谢你的帮助.

解决方法:

要实现您的目标,您需要两件事:

要设置日期选择器的日期,最好的方法是使用espresso PickerActions,我写了herehere,但是会从那里复制我的答案的一些部分:

最简单的方法是使用PickerActions.setDate方法:

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

要使其正常工作,您必须在gradle文件中添加com.android.support.test.espresso:espresso-contrib库,并且可能会排除某些库,如果您遇到问题,请查看上面的链接答案.

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

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

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)));
上一篇:javascript – 确认DatePicker时间更改


下一篇:Beta No.1