2013-03-05 9 views
6

के कारण जुनीट परीक्षण विफल रहा है परीक्षण विधि का नाम अन्य परीक्षणों को क्यों प्रभावित कर सकता है?विधि नाम

मेरे पास 2 कक्षाओं के परीक्षण के साथ एक सूट है, और जब मैं कक्षा 1 का विधि नाम बदलता हूं, कक्षा 2 में मेरा परीक्षण ठीक है (हरा)।

मैंने देखा कि दोनों वर्गों के पास एक ही नाम के साथ एक विधि है, लेकिन असफलता परीक्षण इनमें से कोई नहीं है। हालांकि अगर मैं उनमें से किसी का नाम बदलता हूं, तो सभी परीक्षण ठीक हैं।

क्या अलग-अलग वर्गों में एक ही नाम के साथ 2 विधियां ठीक हैं, लेकिन एक ही सूट में? और तथ्य यह है कि एक और परीक्षण यादृच्छिक रूप से विफल रहता है सिर्फ एक संयोग है?

ps: उस विधि का नाम बदलने के बाद चलाए गए परीक्षणों का क्रम बदल दिया गया है। ps2: मेरी खराब अंग्रेजी के लिए खेद है। enter image description here

+11

क्या परीक्षण अच्छी तरह डिज़ाइन किए गए हैं ताकि वे वास्तव में किसी भी क्रम में दौड़ सकें? क्या कोई ऐसा राज्य है जो उनके द्वारा चलाए जाने वाले आदेश पर निर्भर हो सकता है? – vikingsteve

+6

समस्या शायद निष्पादन का आदेश है, न कि परीक्षण का नाम। परीक्षणों में से एक (या कई) दूसरे की स्थिति बदल सकता है। –

+1

एक टेस्ट अलगाव विफलता की तरह बदबू आ रही है, क्योंकि इसे तब कहा जाता है जब कोई परीक्षण किसी अन्य परीक्षण के दुष्प्रभावों पर निर्भर करता है, इस प्रकार उन्हें किसी विशेष क्रम में चलाने की आवश्यकता होती है। –

उत्तर

7

वहाँ JUnit में कोई बग है:

यह तस्वीर बेहतर मेरे सवाल व्याख्या कर सकते हैं! हमारी टीम ने इसी तरह के परिणाम अनुभव किए, जो अनुचित संसाधन प्रबंधन के कारण होते हैं। आप अपने असफल परीक्षण का नाम बदलने का प्रयास कर सकते हैं ताकि उन्हें पहले निष्पादित किया जा सके। उन्हें अब हरे रंग की बारी करनी चाहिए, यह ज्यादातर संकेत है कि एक संसाधन को परीक्षणों के बीच गलती से साझा किया जाता है। उस स्थिति में आप संसाधन को आंसू में मुक्त करने का प्रयास कर सकते हैं (@After)। कारण खोजने के लिए यहां एक छोटी सी चेकलिस्ट है:

  • क्या वहां कोई परीक्षण है जो परीक्षण से बचता है?
  • क्या सभी निष्पादक बंद हो गए हैं और समाप्त हो गए हैं?
  • क्या परीक्षण या परीक्षण के बाद भी फ़ाइलें खुलती हैं?
  • क्या टेस्ट-क्लास में सभी फ़ील्ड परीक्षण के बाद साफ़/पुनः आरंभ किए गए हैं?
  • स्थिर संदर्भ या सिंगलेट्स का उपयोग करने से बचें
  • केवल अपनी आंसू विधि में संसाधनों को मुक्त न करें, केवल आंसू विधि में। अन्यथा एक अपवाद कोड के इस टुकड़े को पहुंचने योग्य बना सकता है।
संबंधित मुद्दे