检查 Android Espresso 框架中的 DatePicker 日历值
Check DatePicker calendar value in Android Espresso framework
我有一个 activity,带有两个 DatePicker
控件和一些文本输入和按钮。我想用浓缩咖啡测试一些场景:
- 将日期设置为第一个
DatePicker
。
- 设置一些文本并单击按钮 触发我的业务逻辑并将日期设置为秒
DatePicker
。
- 检查第二个日期
DatePicker
。
在第 3 步中,我想做类似 onView(withId(R.id.end_date_picker)).check(matches(withText("25-01-2017")));
的事情。我可以用什么代替 withText
来检查 DatePicker Calendar/Date 值?感谢您的帮助。
要实现你想要的,你需要两件事:
要为日期选择器设置日期,最好的方法是使用 espresso PickerActions,我写过关于它们的文章 here and ,但将从那里复制我的部分答案:
最简单的方法是使用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)));
我有一个 activity,带有两个 DatePicker
控件和一些文本输入和按钮。我想用浓缩咖啡测试一些场景:
- 将日期设置为第一个
DatePicker
。 - 设置一些文本并单击按钮 触发我的业务逻辑并将日期设置为秒
DatePicker
。 - 检查第二个日期
DatePicker
。
在第 3 步中,我想做类似 onView(withId(R.id.end_date_picker)).check(matches(withText("25-01-2017")));
的事情。我可以用什么代替 withText
来检查 DatePicker Calendar/Date 值?感谢您的帮助。
要实现你想要的,你需要两件事:
要为日期选择器设置日期,最好的方法是使用 espresso PickerActions,我写过关于它们的文章 here and
最简单的方法是使用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)));