سؤال

أحاول قراءة قيمة من وجهة نظري واجهة المستخدم.هذه هي الطريقة التي أستخدمها للعثور على السلسلة التي أحتاجها.هذا يعود فقط textView معرف ، وليس المحتوى.

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

كيف يمكنني العودة سلسلة أحتاج?

هل كانت مفيدة؟

المحلول

كما ذكرنا في التعليقات ، لم نجعل هذا الإجراء مواطنا من الدرجة الأولى في واجهة برمجة تطبيقات إسبرسو من أجل تشجيع مؤلفي الاختبار على أن يكونوا صريحين في الإجراءات والتأكيدات وتثبيط المنطق الشرطي في الاختبارات.مع وضع ذلك في الاعتبار ، أشجعك على النظر في كتابة مزيف لخادمك ، بحيث يمكنك التحكم في إدخال الاختبار (وتجنب التقشر) وتجنب المنطق الشرطي.

ومع ذلك ، إذا كنت على الاطلاق يجب الحصول على قيمة ، يمكنك أن تفعل شيئا من هذا القبيل:

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());
  }
}

بالطبع ، إذا قمت بذلك كثيرا (وهو ما لا يجب عليك فعله) ، فيمكنك جعله أجمل بوضع كل هذا في فصل منفصل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top