使用DatePicker记录Espresso测试

时间:2017-03-11 19:00:54

标签: android android-espresso

录音机产生的代码在录音后立即失败。

原因在于,在录制时,我点击年份,年份微调器弹出并向后滚动,然后选择其中一年。录像机无法捕捉滚动。

在Xcode中,他们添加了一种滚动到项目的方法。在Espresso中找不到类似的东西。

(使用Android Studio 2.3。)

1 个答案:

答案 0 :(得分:8)

我很长时间没有使用录音机,而是手工编写我的测试,所以不确定这个答案对你有帮助。

我使用此行在datepicker中设置日期:

loadScript

onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(year, monthOfYear, dayOfMonth)); 位于特殊的espresso支持库中 - PickerActions - 将它添加到您的gradle文件中(由于支持库版本不匹配,我需要多个排除以防止编译错误):< / p>

espresso-contrib

然后我在辅助方法中使用它,单击打开日期选择器的按钮,设置日期并通过单击确定按钮确认它:

androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') {
    exclude group: 'com.android.support', module: 'appcompat'
    exclude module: 'support-annotations'
    exclude module: 'support-v4'
    exclude module: 'support-v13'
    exclude module: 'recyclerview-v7'
    exclude module: 'appcompat-v7'
}

然后在我的测试中使用它:

public static void setDate(int datePickerLaunchViewId, int year, int monthOfYear, int dayOfMonth) {
    onView(withParent(withId(buttonContainer)), withId(datePickerLaunchViewId)).perform(click());
    onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(year, monthOfYear, dayOfMonth));
    onView(withId(android.R.id.button1)).perform(click());
}