测试记录器会在录制后运行时立即失败。
原因是,在录制过程中,我点击了年份,年份选择器弹出,我向后滚动并选择了其中的一年。录制器没有捕捉到滚动操作。
在Xcode中,他们添加了一个方法来滚动到该项。我在Espresso中没有找到类似的东西。
(使用Android Studio 2.3。)
测试记录器会在录制后运行时立即失败。
原因是,在录制过程中,我点击了年份,年份选择器弹出,我向后滚动并选择了其中的一年。录制器没有捕捉到滚动操作。
在Xcode中,他们添加了一个方法来滚动到该项。我在Espresso中没有找到类似的东西。
(使用Android Studio 2.3。)
我已经很长一段时间没有使用录音机了,改为手写我的测试。
我使用以下行来设置DatePicker中的日期:
onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(year, monthOfYear, dayOfMonth));
PickerActions类定义在espresso-contrib库中。将其添加到您的gradle文件中,如下所示:
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0'
然后我将其用于辅助方法中,该方法点击打开一个DatePickerDialog的按钮,设置日期并通过单击“确认”按钮来确认:
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());
}
然后按照以下方式在我的测试中使用:
TestHelper.setDate(R.id.date_button, 2017, 1, 1);
//TestHelper is my helper class that contains the helper method above
// Sets a date on the date picker widget
onView(isAssignableFrom(DatePicker.class)).perform(setDate(1980, 10, 30));
// Confirm the selected date. This example uses a standard DatePickerDialog
// which uses
// android.R.id.button1 for the positive button id.
onView(withId(android.R.id.button1)).perform(click());