2013-02-17 41 views
11

उदाहरण के लिए परीक्षण JUnit करने के लिए, मैं कैसे परीक्षण करते हैं:कैसे एक इटरेटर

ArrayList<String> list = new ArrayList<String>(); 
list.iterator(); 

यह कैसे "iterator()" विधि का परीक्षण करने के?

धन्यवाद।

+0

आप 'iterator()' का परीक्षण क्यों करना चाहते हैं? – m0skit0

+1

मैंने अपनी कक्षा में से एक के लिए अपना खुद का इटरेटर लिखा और मैं इस व्यापक प्रतिक्रिया में जोड़ने के लिए उस इटरेटर (शायद अगले(), हैनक्स्ट() ... खाली केस सामान) –

उत्तर

17

कुछ परीक्षण मैं के बारे में सोच सकते हैं:

एक खाली संग्रह पर
  • परीक्षण hasNext (रिटर्न गलत)
  • परीक्षण अगले() एक खाली संग्रह पर (फेंकता अपवाद) पर
  • परीक्षण hasNext एक आइटम के साथ एक संग्रह (सत्य, कई बार)
  • परीक्षण एक आइटम के साथ संग्रह पर अगला/अगला है: हैक्स्टक्स्ट सत्य लौटाता है, अगला आइटम लौटाता है, अगला अगला झूठा देता है, दो बार
  • उस कॉल पर परीक्षण निकालें रूपांतर: जांच आकार 0
  • के बाद
  • परीक्षण फिर से हटाने है: कई मदों के साथ एक संग्रह के साथ
  • अंतिम परीक्षण अपवाद, यह सुनिश्चित कर लें इटरेटर, प्रत्येक आइटम के माध्यम से चला जाता है सही क्रम में
  • निकालें (यदि वहाँ एक है) संग्रह से सभी तत्व: संग्रह अब खाली है

आप the tests used in openJDK पर भी एक नज़र डाल सकते हैं।

+0

के बारे में सबकुछ जांचना चाहता हूं। एक और परीक्षण हो सकता है: 'ConcurrentModificationException' जैसे अपवाद की जांच करना जब सूची के तत्व समवर्ती रूप से बदल जाते हैं जबकि इटेटरेटर सूची में पुनरावृत्त होता है। –

3

आप नहीं करते हैं।

ऑरैकल और सूर्य से लड़के पहले से ही ऐसा कर चुके हैं।

यदि आप पुनरावर्तक के अपने कार्यान्वयन को बनाते हैं तो आपको AFAIR 2 विधियों को लागू करना होगा और आपको यह जांचना होगा कि वे अनुबंध का पालन करते हैं या नहीं।

अब इसका मतलब है: अंतर्निहित संग्रह के अगले तत्व को लौटाना या अपवाद फेंकना और यह बता देना कि क्या बाद के तत्व हैं। बस उन विधियों को अपने इटरेटर पर कॉल करें और परिणाम दें।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^