2012-11-26 17 views
9

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

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

संपादित करें: परीक्षण मेरे लिए वर्णमाला क्रम में नहीं चल रहे हैं (वीएस 2010 पर आर # 7.1)। मेरे पास प्रति वर्ग एक स्रोत फ़ाइल है। स्रोत कोड में विधियों के क्रम में एक वर्ग के भीतर परीक्षण चलने लगते हैं, लेकिन मैं यह नहीं समझ सकता कि आर # परीक्षण कक्षाओं के क्रम को कैसे निर्धारित करता है। मैं यही कर रहा हूं, क्योंकि धीमी और तेज़ परीक्षण अलग-अलग वर्गों में हैं। यह वर्णमाला नहीं है, लेकिन यह रन से चलाने के लिए संगत है।

संपादित करें 2: ठीक है, इसे समझ लिया (उत्तर देखें)।

उत्तर

2

ऐसा लगता है कि परीक्षा निष्पादन की .... रूप में वर्णमाला के क्रम में है तो तुम परीक्षण आदेश मिलान करने के लिए अपने नाम स्थान/वर्ग के नाम बदल सकता है। लेकिन मुझे लगता है कि यह आपके लिए एक विकल्प नहीं है।

एक और विकल्प "यूनिट टेस्ट सत्र" विंडो में विभिन्न परीक्षण सत्र में परीक्षण जोड़ें। सत्र # 1 पर तेज़ परीक्षण ले जाएं और सत्र # 2 में धीमे परीक्षण करें। फिर आप केवल एक परीक्षण सत्र चलाते हैं जिसकी आपको आवश्यकता है।

नहीं एक विकल्प द्वारा श्रेणियाँयूनिट टेस्ट सत्र विंडो में अपने परीक्षण तरीकों (यानी .: [TestCategory("Fast"), TestMethod] और [TestCategory("Slow"), TestMethod]) और समूह अपने परीक्षण के लिए TestCategory जोड़ना है। आदेश के परीक्षण के लिए कोई प्रभाव है।

+0

धन्यवाद, मैं नामस्थान और कक्षा के नाम बदल सकता हूं, लेकिन आदेश मेरे लिए वर्णानुक्रम नहीं है - संपादन देखें। परीक्षण सत्र विचार एक अच्छा (+1) है, हालांकि ऐसा कुछ है जो मुझे हर बार ऐसा करने की ज़रूरत होती है जब मैं उस समाधान को खोलता हूं जो आदर्श नहीं है। – EM0

2

कारण मैं ऐसा करना चाहते हैं कि कुछ परीक्षण एक निम्न स्तर पर काम करते हैं और बहुत तेजी से कर रहे हैं, लेकिन अन्य परीक्षण उच्च स्तर पर काम करते हैं और ज्यादा धीमी है।

स्प्लिट दो अलग-अलग परियोजनाओं में परीक्षण:

मैं तरीकों में से एक जोड़े को सुझाव है। (उदाहरण के लिए। एक नेटवर्क, डेटाबेस, फाइल सिस्टम

YourProject.Test.Unit

में "तेज" परीक्षण रखो और

YourProject.Test.Integration

एकता परीक्षण में धीमी गति परीक्षण सामान्य रूप से परीक्षण जो अन्य घटकों के साथ बातचीत कर रहे हैं , आदि) जो धीमी टेस्ट रन का कारण बन सकता है। यह हो सकता है कि आपके धीमे परीक्षण बाहरी संसाधन तक पहुंच रहे हों (हम उसे नहीं जानते)।

या धीमे परीक्षणों को चिह्नित करने के लिए श्रेणियों का उपयोग करने के लिए @rsrs के सुझाव का उपयोग करें। मैं श्रेणी विधि का उपयोग करता हूं कि आपके परीक्षण वास्तव में सभी यूनिट परीक्षण हैं, और इस प्रकार उन्हें विभाजित करने का अर्थ नहीं होगा।

+0

धन्यवाद। मैं दो परियोजनाओं में विभाजित नहीं करना चाहूंगा और फिर भी, मुझे नहीं पता कि यह सुनिश्चित करने के लिए कि तेज परियोजना पहले चलती है। – EM0

4

यह एक हैक की तरह लगता है, लेकिन मुझे पता चला कि अगर मैं परियोजना से धीमे परीक्षणों के साथ फ़ाइलों को हटा देता हूं और उन्हें फिर से जोड़ता हूं तो वे आखिरी रन चलाते हैं। तो ऐसा प्रतीत होता है कि आर # उस आदेश का ट्रैक रखता है जिसमें परीक्षण कक्षाओं वाली स्रोत फाइलें शामिल की गई थीं और उन्हें उस क्रम में चलाया गया था। (फाइलों को दोबारा ऑर्डर करने के लिए .csproj फ़ाइल को संपादित करने का कोई प्रभाव नहीं पड़ा, इसलिए इसका उपयोग नहीं किया जाता है।)

1

या, आप एक टेस्ट बना सकते हैं जो आप चाहते हैं कि अन्य परीक्षणों में कॉल को ऑर्केस्ट्रेट करता है - तो यह परीक्षण स्वयं "सत्र" के रूप में कार्य करता है।

[TestMethod] 
public void A_RunAllTests() 
{ 
    Test1(); 
    Test2(); 
    . 
    . 

} 
+0

यह आपको नहीं दिखाएगा कि एक परीक्षण विफल हुआ। यदि आप असफल परीक्षण 'A_RunAllTests' पर डबल क्लिक करते हैं तो यह' test1' या 'test2' पर जाएगा, वास्तविक वास्तविकता के लिए नहीं। – t3chb0t

1

सही समाधान Explorer में अपने unittest परियोजना पर क्लिक करें> जोड़ें> आदेश दिया टेस्ट ..

आप इस Resharper से परीक्षण का आदेश दिया नहीं पहुँच सकते हैं, लेकिन यह वी.एस. टेस्ट Explorer में दिखाई देगा। अपने ऑर्डर किए गए परीक्षणों को एक विशिष्ट वीएस टेस्ट प्लेलिस्ट में जोड़ें, और अपने रिशेर्पर सत्र/सत्र से शामिल परीक्षणों को हटा दें।

मुझे बहुत सारे बॉयलरप्लेट को बचाने के लिए मैं आम तौर पर डेटाबेस को जोड़ने के साथ इस तकनीक का उपयोग करता हूं> प्राप्त करें> संपादित करें> परीक्षण हटाएं और परीक्षणों में से किसी एक के मामले में परीक्षण आवेषण के डेटाबेस को स्वाइप करने के लिए [क्लासक्लेनअप] विशेषता के साथ एक क्लीनअप विधि रखें असफल।

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