Запись Эспрессо-тест с управления datepicker


Записывающее устройство выдает код, который быстро выходит из строя при запуске после записи.

Причина в том, что во время записи я нажимаю на год, появляется счетчик года, и я прокручиваю назад, а затем выбираю один из лет. Диктофон не фиксирует прокрутку.

В Xcode они добавили метод для прокрутки до элемента. Не смог найти ничего похожего в эспрессо.

(Использование Android Studio 2.3.)

1 2

1 ответ:

Я давно не пользовался диктофоном и вместо этого писал свои тесты от руки, поэтому не уверен, что этот ответ поможет вам.

Я использую эту строку для установки даты в датапикере:

onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(year, monthOfYear, dayOfMonth));

PickerActions находится в специальной библиотеке поддержки espresso-the espresso-contrib - добавьте его вот так в файл gradle (мне нужно несколько исключений, чтобы предотвратить ошибки компиляции из-за несоответствия версии библиотеки поддержки):

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'
}

Затем я использую это в вспомогательном методе, который нажимает кнопку, которая открывает окно выбора даты, устанавливает дату и подтверждает ее нажатием кнопки ok:

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