标签:android datepicker android-espresso coded-ui-tests
我有一个带有两个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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。