2011-06-16 19 views
9

मैं यूनिट परीक्षण (टीडीएनईटी के साथ चल रहा) के लिए एनयूनीट का उपयोग कर रहा हूं।Assert.DoesNotThrow NUnit के साथ - स्टैक ट्रेस कैसे प्राप्त करें?

Assert.DoesNotThrow का उपयोग करते समय, मुझे अपवाद मिलता है, लेकिन बिना किसी स्टैक ट्रेस के, जो रूट समस्या की पहचान करना कठिन बनाता है।

मैं इससे कैसे निपट सकता हूं?

+0

बस जानकारी के लिए: Resharper इकाई परीक्षण और विजुअल स्टूडियो यूनिट परीक्षण (VSTest और NUNIT3 एडाप्टर का उपयोग करके) दोनों DoNotThrow के लिए पूर्ण स्टैक ट्रेस दिखाते हैं। –

उत्तर

11

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

इसके अलावा, यदि आपके पास एकाधिक आवेषणों के साथ बहुत लंबा परीक्षण है तो Assert.DoesNotThrow एक महत्वपूर्ण भूमिका निभाता है कि सही कोड ब्लॉक ने अपवाद फेंक दिया है। हालांकि, इस मामले में एक और उपयुक्त समाधान यह देखने के लिए है कि परीक्षण को छोटा किया जा सकता है और/या आवेषण अपने स्वयं के परीक्षणों में स्थानांतरित हो जाते हैं।

3

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

मेरे परीक्षणों में से लगभग 10% इस तरह काम करते हैं; बिलकुल भी कोई दावा नहीं, और ThisOrThatShouldNeverThrow() जैसे विधि नाम।

डीबगिंग करते समय एक और विकल्प, डीबगर (टीडी.Net का उपयोग करके) और डीबग में परीक्षण चलाने के लिए है। अपवाद कुछ अतिरिक्त बॉक्स की जांच करें ताकि अपवाद फेंकने पर डीबगर बंद हो जाए।

+0

इसे पूरा करने के कई अन्य तरीके हैं, लेकिन मैं DoNotThrow विधि के बारे में सोच रहा था, और अधिक विशेष रूप से, यदि इस जानकारी को प्रदर्शित करने के लिए NUnit को कॉन्फ़िगर किया जा सकता है। मैं DoNotThrow विधि की नकल कर सकता हूं (जो बस कोशिश करता है .. मुझे लगता है कि पकड़ो) और इस जानकारी को स्वयं आउटपुट करें। –

+1

ठीक है, मैंने सोचा था कि आप एक व्यावहारिक समस्या को हल करने की कोशिश कर रहे थे। इस मामले में, इसे न्यूटिट में क्यों न पकड़ें और इसे योगदान दें? उचित मौका आप इस सुविधा में रुचि रखने वाले एकमात्र व्यक्ति नहीं हैं। – skrebbel

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