Question

Je suis en train de lire une valeur à partir de mon INTERFACE utilisateur vue.C'est la méthode que j'utilise pour trouver la chaîne dont j'ai besoin.Cela renvoie uniquement l' textView id, et non le contenu.

    public static String getSpeedIndex(){
    return onView(allOf(withId(R.id.slider_index),
            isDescendantOfA(withId(R.id.speed_number_column))))
            .toString();
    }

Comment puis-je retourner la chaîne dont j'ai besoin?

Était-ce utile?

La solution

Comme mentionné dans les commentaires, nous n'avons pas à faire de cette action une première classe de citoyen de l'Espresso API afin d'encourager d'essai des auteurs d'être explicite avec des actions et des assertions et de décourager la logique conditionnelle dans les tests.Avec cela à l'esprit, je vous encourage à regarder dans la rédaction d'un faux de votre serveur, de sorte que vous pouvez contrôler l'entrée de test (et éviter de feuilletage) et d'éviter la logique conditionnelle.

Toutefois, si vous devez absolument obtenir la valeur, vous pouvez faire quelque chose comme ceci:

final AtomicReference<String> textFromView = new AtomicReference<String>();

onView(<matcher for your view>).perform(new ViewAction() {
  @Override
  public Matcher<View> getConstraints() {
    // TODO - at the very least, check that this is an instance of TextView 
  }

  @Override
  public String getDescription() {
    return "get text from text view"
  }

  @Override
  public void perform(UiController uiController, View view) {
    textFromView.set(((TextView) view).getText());
  }
}

Bien sûr, si vous faites cela, beaucoup (qui ne convient pas), vous pouvez le rendre plus agréable en mettant tout cela dans une classe à part.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top