2009-09-24 10 views
21

मैं अपनी टीयरडाउन विधि जांचना चाहता हूं कि क्या पिछले परीक्षण कुछ तर्क लागू करने से पहले सफल था या नहीं। क्या इसे करने का कोई आसान तरीका है?NUnit - क्या टेरडाउन में जांचना संभव है कि परीक्षा सफल हुई है या नहीं?

उत्तर

2

एक खतरनाक विचार की तरह लगता है जब तक कि यह एकीकरण परीक्षण न हो, कहने के लिए डेटा कहने के साथ। परीक्षण में खुद क्यों नहीं करते?

स्पष्ट रूप से कक्षा में एक निजी ध्वज सेट किया जा सकता है।

यह वही खुद has suggestedCharlie Poole है अगर आपको चाहिए

+1

यही परेशान, मैं होता कुछ प्रकार की NUnit.CurrentTestContext API की उम्मीद है। मुझे सिर्फ यह जानने की जरूरत है कि परीक्षण सफल हुआ है क्योंकि अतिरिक्त जानकारी है जो मैं इस स्थिरता में प्रदान कर सकता हूं अगर यह विफल हो जाता है जो डिबगिंग में मदद करेगा। –

2

आप इस मैन्युअल रूप से करना सिर्फ अगर। असल में आप यह भी नहीं जान पाएंगे कि कौन से परीक्षण चलाने का इरादा है। NUnit IDE में कोई कुछ परीक्षण सक्षम कर सकता है और किसी अन्य को अक्षम कर सकता है। आप को पता है अगर कुछ विशेष परीक्षा समाप्त हो गया है चाहते हैं तो आप अपने परीक्षण कक्षा में इस तरह कोड शामिल हो सकते हैं:

enum TestStateEnum { DISABLED, FAILED, SUCCEDED }; 
TestStateEnum test1State = TestStateEnum.DISABLED; 

[Test] 
void Test1() 
{ 
test1State = TestStateEnum.FAILED; // On the beginning of your test 
... 
test1State = TestStateEnum.SUCCEDED; // On the End of your Test 
} 

तो फिर तुम जाँच कर सकते हैं test1State चर। यदि परीक्षण एक अपवाद फेंकता है तो यह सफल नहीं होगा।

[Test] 
void Test1() 
{ 
test1State = TestStateEnum.SUCCEDED; // On the beginning of your test 
try 
{ 
    ... // Your Test 
} 
catch(Exception) 
{ 
    test1State = TestStateEnum.FAILED; 
    throw; // Rethrows the Exception 
} 
} 
+0

यह बताने का प्रयास नहीं है कि कौन सा परीक्षण चलाया गया था, बस एक अलग त्रुटि जिसे मैं फेंकना चाहता हूं, इसलिए मैं एक और सटीक स्टैकट्रैक प्राप्त कर सकता हूं –

-1

IMHO तर्क फाड़ परीक्षण के परिणाम से स्वतंत्र होना चाहिए: आप भी अंत में एक अलग तर्क के साथ अपने परीक्षण में ब्लॉक एक कोशिश पकड़ में इस डाल सकते हैं।

आदर्श रूप से आपको सेटअप और टियरडाउन का उपयोग पूरी तरह से करना चाहिए, एक अल xunit.net। अधिक जानकारी के लिए here देखें।

+0

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

25

यह पहले ही प्रश्न के लिए Ran's answer में हल हो चुका है। Quoting Ran:

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

अधिक जानकारी के लिए http://nunit.org/?p=releaseNotes&r=2.5.7

[TearDown] 
public void TearDown() 
{ 
    if (TestContext.CurrentContext.Result.Status == TestStatus.Failed) 
    { 
     PerformCleanUpFromTest(); 
    } 
} 
+0

लिंक के लिए धन्यवाद। कृपया ध्यान दें कि डेविड के जवाब से डेढ़ साल पहले यह प्रश्न पोस्ट किया गया था। –

+3

नुनिट 3.x में यह है 'अगर (TestContext.CurrentContext.Result.Outcome == परिणामस्टेट। विफलता) ' – Lukas

4

का संदर्भ लें आप NUnit 3.5 के साथ अंतिम परीक्षण की स्थिति का पता लगाने के टियरडाउन उपयोग करना चाहते हैं यह होना चाहिए:

[TearDown] 
public void TearDown() 
{ 
    if (TestContext.CurrentContext.Result.Outcome.Status.Equals(TestStatus.Failed)) 
    { 
     //your code 
    } 
} 
संबंधित मुद्दे

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