2012-09-20 15 views
5

में प्रोग्रामेटिक रूप से टाइमआउट एक परीक्षण है, मुझे एक ऐसी स्थिति मिली है जहां मैं एक बाहरी उपकरण निष्पादित करने के लिए एक यूनिट परीक्षण का उपयोग कर रहा हूं जो परीक्षण करता है। मैं टूल के एक्जिट कोड से निर्धारित कर सकता हूं कि परीक्षा उत्तीर्ण, विफल या समय समाप्त हो गई है या नहीं।एमएसटीएस्ट

क्या कोई तरीका है कि मैं यूनिट परीक्षण में असफल हो सकता हूं जो परीक्षण परिणामों को विफल होने के बजाय टाइमआउट पर सेट करेगा?

मैंने टाइमआउट अपवाद फेंकने की कोशिश की है, लेकिन यह एक आर्ट का उपयोग करने के समान परिणाम है।

संपादित करें: हम टीएफएस में परीक्षण मामलों के साथ इकाई परीक्षण को जोड़ रहे हैं। माइक्रोसॉफ्ट टेस्ट सेंटर में एक टेस्ट रन में एक परीक्षण में कई राज्य हो सकते हैं। इनमें से एक टाइमआउट राज्य है। मैं अपने परीक्षण में असफल होने की कोशिश कर रहा हूं ताकि यह सही ढंग से इस राज्य में दिखाई दे और असफल परीक्षण मामलों के साथ मिल जाए।

+0

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

+4

@ जैमी: वह नाइटपिकिंग है। वह शायद एकीकरण परीक्षण कर रहा है लेकिन (कई अन्य लोगों की तरह) इसे एक यूनिट टेस्ट कहते हैं क्योंकि यह एक परीक्षण धावक में चलाया जाता है। – erikkallen

+0

वह @erikkallen हो सकता है, हालांकि वह इसे यूनिट टेस्ट के रूप में लिखने का इरादा रख सकता है लेकिन मजाक कर पूरी तरह से समझ नहीं लेता है या जानता है कि यह भी करने की बात है। उत्तरार्द्ध के मामले में मेरी टिप्पणी ओपी को एक उपयोगी दिशा में खराब कर सकती है, यदि नहीं, तो कोई नुकसान नहीं हुआ। –

उत्तर

1

यूनिट परीक्षण में आप 2 रंगों के साथ निपटान करते हैं: हरा और लाल। टाइमआउट रंग नहीं है।

तो मुझे लगता है कि आप मैन्युअल रूप से मामले में परीक्षण अपने बाहरी उपकरण समय समाप्ति विफल हो सकता है: बेशक की इच्छा

Assert.Fail("External tool used to do this test timed out"); 

अपने बाहरी उपकरण है कि पता लगाने के लिए जिस तरह से समाप्त हो गया है आप उपयोग कर रहे बाहरी उपकरण पर निर्भर करते हैं और जिस तरह से आप इसे अपने यूनिट परीक्षण से आमंत्रित कर रहे हैं।

+0

माइक्रोसॉफ्ट टेस्ट सेंटर पर एक नज़र डालें और आपको सिर्फ ग्रीन एंड रेड से अधिक मिलेगा। यदि एक परीक्षण बहुत लंबा लगता है (समय बाहर) आप भी पीला मिलता है। – Christo

+0

मैं इस जवाब को वोट देने का लुत्फ उठा रहा हूं क्योंकि मुझे लगता है कि यह प्रश्न (यहां तक ​​कि मूल रूप में भी) से स्पष्ट था कि यह वही नहीं है जो मैं पूछ रहा हूं और मैंने पहले ही एक आर्ट का उपयोग करने पर विचार किया है। – Christo

0

TimeoutException फेंकने का आपका दृष्टिकोण एक अच्छा विकल्प प्रतीत होता है। हालांकि TimeoutExceptionUnitTestAssertException से प्राप्त नहीं हुआ है।

आप निम्न बातों में से एक क्या करना चाहते हो सकता है:

  1. स्ट्रिंग के रूप में कारण का संकेत एक AssertFailedException फेंक।

  2. उप-वर्ग UnitTestAssertException कस्टम UnitTestTimeOutException के साथ उप-वर्ग और उसे फेंक दें।

  3. Assert.Fail @ डारिन-डिमिट्रोव suggested के रूप में उपयोग करें।

1

यह है नहीं वास्तव में "प्रोग्राम के रूप में" लेकिन आप:

दृश्य स्टूडियो में
  • Set Time Limits for Running Tests
  • माइक्रोसॉफ्ट परीक्षण केंद्र अगर आप माइक्रोसॉफ्ट टेस्ट से अपने परीक्षण चलाने में टेस्ट सेटिंग्स का उपयोग करें केंद्र या tcm.exe (Run Tests from the Command Line Using Tcm देखें)

अगर यह स्वीकार किया कि बाहरी उपकरण से बाहर निकलें कोड समय के लिए बाहर के साथ देता है (इस "कार्यक्रम संबंधी" हिस्सा होगा।)

तो परीक्षण ढांचे सेट हो जाएगा आपका परीक्षण अभी इंतजार करना चाहिए आपके लिए "टाइमआउट" का परीक्षण परिणाम।

विशेष रूप से यदि आपके परीक्षण स्वचालित हैं तो यह एक उपयुक्त समाधान होगा, मुझे लगता है।

12

आप परीक्षण प्रति टाइमआउट सीमा निर्धारित कर सकते, टेस्ट विशेषता में टाइम आउट (मिलीसेकंड) के अलावा का उपयोग कर ...

[TestMethod, Timeout(2000)] 

टेस्ट असफल हो जायेगी निष्पादन 2 सेकंड से अधिक समय लेता है।

धन्यवाद मार्को

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