2012-06-17 20 views
6

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

क्या वीएस -2010 सेटअप हो सकता है ताकि अपवाद संदेश प्रत्येक इकाई परीक्षण के लिए सीधे दिखाया जा सके?

संपादित करें: मैं इकाई परीक्षण वी.एस. standaard उपयोग कर रहा हूँ:

[TestClass] 
public class MiniMaxTest 
{ 
    [TestMethod] 
    public void TestConstructor() 
    { 
     throw new Exception("Must I click view details to see this?"); 
    } 
} 

क्यों इन सवालों? आप लोग इन चीजों को पुन: उत्पन्न कर सकते हैं। डीबग या रन टेस्ट एक ही संदेश देते हैं: exception message remains hidden

+2

क्या आप अधिक जानकारी प्रदान कर सकते हैं? उदाहरण के लिए, आप किस परीक्षण ढांचे का उपयोग कर रहे हैं (एमएसटीएस्ट)? आपके परीक्षण कैसा दिखते हैं? – stakx

+1

क्या आप एमएसटीएस्ट का उपयोग कर रहे हैं? यदि आपका यूनिट परीक्षण उपकरण निर्दिष्ट नहीं है। इसके अलावा आप अपनी टेस्ट विधि को डीबग क्यों नहीं करते? – BrokenGlass

+0

यदि मुझे यह अधिकार मिला, तो आप कह रहे हैं कि संदेश या कॉलम जो संदेश दिखाता है, पूरे अपवाद को प्रदर्शित करने के लिए बहुत छोटा है? खैर, यूनिट परीक्षण लगातार असफल नहीं होने चाहिए, इसलिए थोड़ी देर में "विवरण देखने के लिए क्लिक करना" इतना बड़ा सौदा नहीं होना चाहिए? – Groo

उत्तर

2

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

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

एमएस परीक्षण सम्मिलन सभी अपवाद फेंक कर लागू किए गए हैं। सभी एमएस टेस्ट Assert फ़ंक्शन अपवाद फेंकते हैं जो UnitTestAssertException से व्युत्पन्न होते हैं। इस तरह के अपवादों के लिए विजुअल स्टूडियो में विशेष हैंडलिंग है।

उदाहरण के लिए: यदि आप इस परीक्षण लिखते हैं:

[TestMethod] 
public void AllAboard() 
{ 
    throw new AssertFailedException("Failboat"); 
} 

AssertFailedException अधिकांश अन्य अभिकथन असफलताओं के लिए मानक आधार वर्ग है।

आप ध्यान दें कि वीएस -2010 जेनेरिक "परीक्षण को अपवाद फेंक दिया" संदेश प्रिंट करता है, इसके बजाय यह सिर्फ "विफलता" प्रिंट करता है।

अब आप जो कुछ कर सकते हैं वह उन चीजों में घिरा हुआ है जो सामान्य अपवादों को AssertFailedException में परिवर्तित करते हैं और फिर आप जो भी संदेश पसंद करते हैं उसे प्रिंट कर सकते हैं।

[TestMethod] 
public void TestStuff() 
{ 
    try 
    { 
     string o = null; // pretend this came from some real code 
     var x = o.Split(new[] { ',' }); // this will throw NullRefException 
    } 
    catch (Exception e) 
    { 
     throw new AssertFailedException(e.Message, e); 
    } 
} 
बेशक

, मैं वास्तव में यह कर की सिफारिश करेंगे नहीं ... यह अत्यधिक शब्द है, और अधिक महत्वपूर्ण बात, आप कॉल स्टैक हार जाते हैं ... लेकिन हे, अब आप अपने टूलबेल्ट के एक और उपकरण मिल गया है

+0

+1 एक व्यवहार्य समाधान के लिए, लेकिन मुझे लगता है कि यह ओवरकिल – Basic

+0

@ बासिक हाँ जैसा लगता है, मैं पूरी तरह से ऐसा नहीं करूँगा, लेकिन वीएस आपको कोई विकल्प नहीं देता है ... इसलिए अगर आप संदेशों को बदलना चाहते हैं, तो यह है आपको क्या करना होगा :-) –