检查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,我写了here和here,但是会从那里复制我的答案的一些部分:
最简单的方法是使用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)));
标签:android,datepicker,android-espresso,coded-ui-tests 来源: https://codeday.me/bug/20190527/1163768.html