2009-11-30 6 views
5

एक जटिल VS2008 समाधान में मेरे पास तीन यूनिट परीक्षण परियोजनाएं हैं। जैसे ही वे एक ही परीक्षण डेटाबेस पर काम करते हैं, यह महत्वपूर्ण है कि परीक्षण परियोजनाओं को एक दूसरे के बाद निष्पादित किया जाए। यह महत्वपूर्ण नहीं है कि कौन सा प्रोजेक्ट पहले, केवल एक ही दूसरे शुरू होने से पहले समाप्त हो गया है।समाधान परीक्षण में सभी परीक्षणों को चलाने पर यूनिट परीक्षण अनुक्रम

  • मैं एक परीक्षण सूची .vsmdi फ़ाइल जहां परीक्षण परियोजना द्वारा आदेश दिया जाता है:

    मैं उन सभी पर अमल करना चाहते हैं, वहाँ ऐसा करने के कई तरीके हैं, जो भिन्न परिणाम मिल रहे हैं। यदि मैं सूची खोलता हूं और परीक्षण सूची संपादक से परीक्षण निष्पादित करता हूं, तो सबकुछ ठीक है।

  • यदि मैं टेस्ट व्यू विंडो खोलता हूं, तो प्रोजेक्ट द्वारा परीक्षणों को सॉर्ट करें और उन्हें चलाएं, फिर सब कुछ ठीक है।
  • हालांकि अगर मैं मेनू से 'टेस्ट -> रन -> सॉल्यूशन में सभी टेस्ट' चुनकर परीक्षण चलाता हूं, तो उन्हें यादृच्छिक क्रम में निष्पादित किया जाता है, जिनमें से कुछ विफल हो जाते हैं, क्योंकि अन्य परीक्षण परियोजनाओं में से एक परीक्षण पहले से ही छेड़छाड़ कर रहा है db।

तो सवाल यह है कि तीसरे दृष्टिकोण का उपयोग करते समय इकाई परीक्षण अनुक्रम निर्धारित करता है? क्या .testrunconfig में डिफ़ॉल्ट परीक्षण सूची निर्दिष्ट करने का कोई तरीका है?

कामकाज के रूप में, यह मुद्दा बिल्कुल महत्वपूर्ण नहीं है। लेकिन किसी भी विचार का स्वागत है। धन्यवाद।

उत्तर

8

उत्कृष्ट xUnit Test Patterns में वर्णित, आप इंटरएक्टिव टेस्ट नामक यूनिट परीक्षण गंध का अनुभव कर रहे हैं। अधिक विशेष रूप से, आप साझा फ़िक्स्चर से पीड़ित हैं, जो यह कहने का एक और तरीका है कि आपके कई परीक्षण समान साझा डेटाबेस का उपयोग करते हैं, और वे पिछले टेस्ट रन के परिणाम पर निर्भर हैं।

यह एक विरोधी पैटर्न है और इसे हर कीमत से बचा जाना चाहिए। पुस्तक इस स्थिति से निपटने के तरीके पर व्यापक मार्गदर्शन प्रदान करती है।

इसका वर्णन करके शुरू करने का कारण यह है कि एमएसटीएस्ट परीक्षणों के आदेश की गारंटी नहीं देता है। हालांकि ऑर्डर प्रतीत होता है (अर्द्ध) निर्धारक, आप इस पर भरोसा नहीं कर सकते हैं। कुछ अन्य यूनिट परीक्षण ढांचे (xUnit.NET दिमाग में आता है) हर बार जब आप टेस्ट सूट चलाते हैं तो यादृच्छिक क्रम में परीक्षण चलाने के लिए भी जाते हैं। एमएसटीएस्ट चरम नहीं है, लेकिन आपके यूनिट परीक्षणों को ऑर्डर करने का कोई तरीका नहीं है।

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

+0

मैं पूरी तरह से सहमत हूं कि एक साझा स्थिरता से बचा जाना चाहिए। हालांकि यहां समस्या परीक्षणों का आदेश नहीं है, लेकिन तथ्य यह है कि परीक्षण परियोजनाएं समानांतर में चलती हैं जो डीबी के सेट-अप और टियरडाउन के साथ सिंक्रनाइज़ेशन समस्याओं को जन्म देती है। मैंने पर्याप्त विवरण में इसका वर्णन नहीं किया। मुझे लगता है कि अब सबसे अच्छा समाधान डीबी के वैश्विक सेट-अप और टियरडाउन है। – Wullie

+0

मुझे नहीं लगता कि एमएसटीएस्ट समानांतर में परीक्षण चलाता है - कम से कम, यह मेरा अनुभव बिल्कुल नहीं है। –

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