मेरे पास एक RecyclerView है जिसमें किसी भी संख्या में आइटम हो सकते हैं। मुझे उस सूची से एक पंक्ति प्राप्त करने में सक्षम होना चाहिए ताकि मैं इसकी सामग्री की जांच कर सकूं या उस पंक्ति पर क्लिक/लंबा क्लिक कर सकूं।

मैं यह पता लगाने के लिए बहुत संघर्ष कर रहा हूं कि ListView के "ऑनडाटा" के विपरीत इसे कैसे किया जाए, पंक्ति को खोजने के लिए RecyclerView के माध्यम से स्क्रॉल करने के लिए कोई अंतर्निहित कार्यक्षमता नहीं है। ऐसा प्रतीत होता है कि RecyclerView के साथ यदि दृश्य वास्तव में स्क्रीन पर नहीं है तो आप उस पंक्ति UI को सत्यापित नहीं कर सकते।

उदाहरणों में मैंने देखा है कि वे प्रत्येक पंक्ति में स्क्रॉल करने के लिए सूची में आइटम्स की संख्या का उपयोग कर रहे हैं। हालाँकि मैं पहले से नहीं जानता कि मेरी सूची में कितनी पंक्तियाँ हैं क्योंकि संख्या निश्चित नहीं है।

यह समाधान बहुत आशाजनक लग रहा था, लेकिन यह मानता है कि आप एस्प्रेसो वस्तुओं में जाने के लिए अपनी सूची में आइटम जानते हैं जो मेरे लिए लागू नहीं है।

https://medium.com/@_rpiel/recyclerview-and-espresso-a-complicated-story-3f6f4179652e

यह उदाहरण यह भी मानता है कि यह जानता है कि कौन सी पंक्तियाँ स्क्रीन से बाहर हैं https://github.com/googlesamples/android-testing/blob/master/ui/espresso/RecyclerViewSample/app/src/androidTest/java/com/example/android/testing/ एस्प्रेसो/RecyclerViewSample/RecyclerViewSampleTest.java

इसी तरह यह उदाहरण जानता है कि किस पंक्ति में जाना है http://blog.forkingcode.com/2016/06/espresso- and-recyclerview.html

मुझे कुछ ऐसा करने की ज़रूरत है

onView(withId(R.id.recyclerView)).perform(findRowWhichHasText("name1");

जहां "findRowWhichHasText" कुछ ऐसा करता है

  • सूची में वस्तुओं की संख्या पाएं
  • बारी-बारी से हर एक पर स्क्रॉल करें (scrollToPosition(i) )
  • जांचें कि क्या उस पंक्ति में वह आइटम है जो मुझे चाहिए। कुछ इस तरह

    StringUtils.equals(viewHolder.nameView.getText().toString(), assetName);
    
1
se22as 5 पद 2018, 20:53

1 उत्तर

सबसे बढ़िया उत्तर

मुझे इस विकी पेज में समाधान मिला। http://alexander-thiele.blogspot. com/2016/01/espresso-ui-tests-and-recyclerview.html

उसका कोड onView(withId(R.id.recyclerView)).perform(RecyclerViewActions.scrollToHolder(withHolderTimeView(getActivity().getString(R.string.all_day_event))));

जहां withHolderTimeView एक मैचर है जो एक व्यूहोल्डर से उस आइटम से मेल खाता है जिसे आप ढूंढ रहे हैं।

0
se22as 5 पद 2018, 18:24