originale répondu par moi ici, mais dans le cadre d'une autre question: Recording an Espresso test with a DatePicker - donc je reposte ma réponse adaptée à partir de là:
Utilisez cette ligne pour définir la date dans un DatePicker:
onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(year, monthOfYear, dayOfMonth));
Ceci utilise le PickerActions
qui fait partie de la bibliothèque de support espresso - le espresso-contrib
. Pour l'utiliser, ajoutez comme celui-ci à votre fichier gradle (Vous avez besoin de plusieurs excludes pour éviter des erreurs de compilation en raison de désadaptation version de la bibliothèque de soutien):
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'
}
Ensuite, vous pouvez créer une méthode d'assistance qui clique sur le point de vue qui ouvre la datepicker, fixe la date et confirme en cliquant sur le bouton 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());
}
et puis l'utiliser comme ceci dans vos tests:
TestHelper.setDate(R.id.date_button, 2017, 1, 1);
//TestHelper is my helper class that contains the helper method above
peut vous montrer les ids et leur type de données. ID du calendrier que vous devez cliquer. –
Je viens de voir que ma réponse ci-dessous semble aussi aider les autres. Si cela résout votre problème ce serait bien si vous pouviez l'accepter comme une réponse correcte? – stamanuel