NUnit

2008-09-04 16 views
5

से TestResult.xml फ़ाइल में अधिक जानकारी जोड़ना मैं यूनिट परीक्षण में "संदेश" जोड़ने में सक्षम होना चाहता हूं, जैसे कि यह वास्तव में NUnit द्वारा उत्पन्न TestResult.xml फ़ाइल में दिखाई देता है। उदाहरण के लिए, इस वर्तमान में उत्पन्न होता है:NUnit

<results> 
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" /> 
</results> 

मैं (या नोड जैसा भी मामला हो), इस तरह के रूप में एक अतिरिक्त विशेषता है करने के लिए सक्षम होने के लिए करना चाहते हैं:

<results> 
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" message="Tested that some condition was met." /> 
</results> 

विचार है कि है उपरोक्त "संदेश" किसी भी तरह से परीक्षण विधि के भीतर परिभाषित किया जाएगा (मेरे मामले में, रन-टाइम पर उत्पन्न)। क्या वहां कोई संपत्ति है कि मुझे ऐसा कुछ करने में सक्षम होने के लिए याद आ रही है?

उत्तर

2

यह बिंदु गुम हो सकता है, लेकिन परीक्षणों का नामकरण करने के बारे में कैसे वे संकेत देते हैं कि वे क्या परीक्षण करते हैं - तो आपको संदेश की भी आवश्यकता नहीं हो सकती है।

यदि यह बिल्कुल जरूरी साबित होता है, तो मुझे लगता है कि आपको अपने स्वयं के टेस्ट्रुनर का उत्पादन करना होगा जो (मेरे सिर के ऊपर से) टेस्टकेस से अतिरिक्त विशेषता पढ़ेगा और इसे आउटपुट में संलग्न करेगा।

+0

आपने पुष्टि की है कि मुझे या तो कुछ प्रतिबिंब जादू करने की आवश्यकता है और रनटाइम पर गतिशील रूप से परीक्षण और नाम परीक्षण करने की आवश्यकता है, या मुझे कस्टम टेस्ट रनर बनाना था। –

+0

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

0

मैं रन टाइम पर कुछ भी उपलब्ध नहीं देख सकता हूं, लेकिन कुछ ऐसी विशेषताएं हैं जिन्हें आप जांचना चाहेंगे: Description विशेषता और Property विशेषता दोनों एक्सएमएल आउटपुट फ़ाइल में टेक्स्ट जोड़ें। दुर्भाग्यवश, वे दोनों संकलित समय पर परिभाषित हैं।

5

हाल NUnit में रिलीज आप कर सकते हैं:

Assert.AreEqual(250.00, destination.Balance, "some message here"); 

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

+0

शानदार यह वही है जो मैं ढूंढ रहा था! –

0

आप किसी भी संदेश को आसानी से लिखने के लिए टेस्टकॉन्टेक्स्ट का उपयोग कर सकते हैं। यहां बताया गया है कि मैं कैसे सेटअप कर रहा हूं।

मेरे प्रत्येक परीक्षण टेस्टबेस श्रेणी से विरासत में मिला है। यह अनावश्यक कोड हटा देता है।

[TestFixture] 
public class TestBase 
{ 

    public IWebDriver driver; 

    //[OneTimeSetUp] and [OneTimeTearDown] go here if needed 

    [SetUp] 
    public void Setup(){ 
     driver = Shortcuts.SetDriver("my browser"); 
    } 

    [TearDown] 
    public void TearDown() 
    { 
     driver.Quit(); 
     Comment("@Result: " + TestContext.CurrentContext.Result.Outcome.ToString()); 
    } 

    public void Comment(string _comment) 
    { 
     TestContext.Out.WriteLine(_comment); 
    } 
    public void Error(string _error) 
    { 
     TestContext.Error.WriteLine(_error); 
    } 

} 

आप नीचे दिए गए दो कार्यों को टेस्टकॉन्टेक्स्ट में कोई संदेश या त्रुटि लिख सकते हैं। यह लंबवत परीक्षणों के साथ अच्छी तरह से काम करेगा।

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

//Role Management 
public class RoleManagementTests : TestBase 
{ 
    [TestCase] 
    public void RoleManagement_7777_1() 
    { 
     Comment("Expected: User has the ability to view all roles in the system."); 
     //Test goes here 
    } 
} 

अब आप निर्गम (दृश्य स्टूडियो) में और TestResult.xml NUnit कंसोल धावक का उपयोग करने में परिणाम देख सकते हैं।