2012-09-27 21 views
7

पास करते हैं मेरे पास मोचा यूनिट परीक्षण सूट है।यूनिट परीक्षण कभी-कभी असफल होते हैं, कभी-कभी

जब मैं उन्हें स्थानीय रूप से चलाता हूं, तो सब ठीक काम करता है। जब मैं उन्हें अपने जेनकींस सीआई सर्वर पर चलाता हूं, तो वे कभी-कभी असफल होते हैं, कभी-कभी पास करते हैं।

मैं पुन: उत्पन्न करने में सक्षम नहीं हूं कि वे क्यों विफल हो जाते हैं। इस व्यवहार का कारण क्या हो सकता है?

+0

उम्मीद फ़ाइलें अस्थायी रूप से बंद कर दिया जा रहा है? उच्च शक्ति वाले सीआई पर बहु-थ्रेडिंग परीक्षणों के साथ समस्याएं चल रही हैं जो देव मशीनों पर नहीं होती हैं? अस्थायी नेटवर्क glitches चीजों को अवरुद्ध? ऐसी कई चीजें हैं जो हार्ड-टू-ट्रैक यूनिट परीक्षण विफलताओं का कारण बन सकती हैं ... यह समस्या हल करने का एक हिस्सा है। क्या यह वही परीक्षण है जो समस्याग्रस्त साबित होता है? – TZHX

उत्तर

1

मुझे लगता है कि आप कई परीक्षणों के लिए परीक्षण फिक्स्चर का पुन: उपयोग कर रहे हैं। कुछ मामलों में परीक्षणों का क्रम आपकी स्थानीय मशीन के क्रम से बदल दिया जाता है और जब आप परीक्षण शुरू करते हैं तो आपके पास सही स्थिरता नहीं होती है। इसे ठीक करने के लिए, आपको प्रत्येक परीक्षण को एक साफ स्थिरता देना चाहिए।

एक अन्य कारण यह हो सकता है कि आप कई स्थानों से डेटाबेस का पुन: उपयोग करते हैं जब रननेन परीक्षण (एक ही परीक्षण कॉन्फ़िगरेशन के साथ दो बिल्ड सर्वर)। प्रत्येक बिल्ड सर्वर को अपना डेटाबेस दें। या अपनी डेटाबेस परत उप/नकली। जब आप अपने बाहरी संसाधनों के कनेक्शन का परीक्षण कर रहे हों, तब तक आपका परीक्षण बाहरी संसाधनों पर निर्भर नहीं होना चाहिए।

+0

अफसोस की बात है, नहीं। पूरा डेटाबेस मिटा दिया जाता है प्रत्येक परीक्षण चलाया जाता है। मैं परीक्षण चलाने के लिए मोचा का उपयोग कर रहा हूं, इसलिए वे श्रृंखला में दौड़ रहे हैं। डेटाबेस उस मशीन पर स्थानीय रूप से स्थापित है, इसलिए इसे अन्य सेवाओं को भी इसका उपयोग नहीं करना चाहिए। –

2

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

साझा वस्तुओं •:

यहाँ कुछ संभावित कारण हैं। अगर अपने परीक्षण धावक एक गैर नियतात्मक क्रम में परीक्षण निष्पादित करता है अगर आप यादृच्छिक त्रुटियों है कि वास्तव में भ्रष्ट उजागर कर रहे हैं राज्य के मुद्दों

• पर्यावरण और बाहरी निर्भरता देख सकते हैं - किसी भी बाहरी उद्देश्य यह है कि राज्य धारण कर सकते हैं अप्रत्याशित परिणाम

पैदा कर सकता है

• समय - कभी-कभी परीक्षण टाइमआउट या थ्रेड नींद के साथ लिखे जाते हैं जो बहुत विशिष्ट होते हैं। बिल्ड सर्वर भारी बोझ के तहत काम किया जाता है तो इन समय समाप्ति पर्याप्त

सामान्य मार्गदर्शन जब तक नहीं हो सकता है, परीक्षण होना चाहिए:

  • पृथक: परीक्षण
  • repeatable एक समय में एक इकाई पर ध्यान केंद्रित: का उत्पादन एक ही परिणाम हर बार
  • स्वतंत्र: जिस क्रम में परीक्षण क्रियान्वित कर रहे हैं कोई फर्क नहीं करना चाहिए
1

मैं इस समस्या को कम करने की कोशिश करेगा execu की संख्या कम टोर 1 तक। यदि परीक्षण अभी भी अंतःस्थापित हो रहे हैं, तो आपके पास Test Run War है, अन्यथा (वे स्थानीय रूप से ठीक से चलते हैं) यह Resource Leakage जैसा दिखता है। http://xunitpatterns.com/Erratic%20Test.html

0

पर

अधिक जानकारी यह आप बहु कोड का परीक्षण कर रहे हैं तो ऐसा करने और अपने परीक्षण में Thread.sleep(time); उपयोग कर सकते हैं। यदि नींद का समय काफी लंबा नहीं है, तो कंप्यूटर प्रसंस्करण गति के आधार पर परीक्षण पास या असफल हो सकते हैं।संबंधित विचार विमर्श:

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