2012-07-25 10 views
15

तो मुझे स्थिति है जब मुझे परीक्षण विधि निकाय से वर्तमान परीक्षण छोड़ने की आवश्यकता है। सरल तरीका यह है कि इस तरह की कुछ विधि विधि में लिखना है।माइक्रोसॉफ्ट यूनिट परीक्षण। क्या परीक्षण विधि निकाय से परीक्षण छोड़ना संभव है?

if (something) return; 

लेकिन मैं एक बहुत जटिल परीक्षण है और मैं तरीकों जो मैं वर्तमान परीक्षा पद्धति शरीर में आह्वान से परीक्षण को छोड़ने के लिए एक तरह से की जरूरत है। क्या यह संभव है?

+1

मेरी पूरी तरह से सहज प्रतिक्रिया _why_ पूछना है? =) और आप हमेशा 'Assert.Pass(); 'या' Assert.Fail(); 'कर सकते हैं। लेकिन अन्यथा ... परीक्षण चलाने के लिए हैं। =) –

+0

परीक्षण क्यों छोड़ें? क्या आप या तो Assert.Fail() या Assert.Inconclusive() को वापस नहीं करना चाहिए? – glosrob

+5

मैं 'Assert.Fail' पर 'Assert.Inconclusive' का सुझाव दूंगा, क्योंकि यह स्पष्ट विफलता केस नहीं है। 'अनन्य' यह स्पष्ट करता है कि आप * नहीं जानते * परीक्षण सफल हुआ या विफल रहा। –

उत्तर

28

इसके अलावा अन्य उत्तर करने के लिए (और सुझाव के रूप में): के बाद से मूल पोस्टर की स्थिति में कोई स्पष्ट विफलता मामला नहीं है मैं, Assert.Fail से अधिक Assert.Inconclusive उपयोग करने का सुझाव चाहते हैं।

परिणामस्वरूप Inconclusive का उपयोग करके यह स्पष्ट हो जाता है कि आप नहीं जानते कि परीक्षण सफल हुआ या विफल रहा - जो एक महत्वपूर्ण भेद है। सफलता साबित नहीं करना हमेशा विफलता का गठन नहीं करता है!

34

आपको इस तरह से परीक्षण छोड़ना नहीं चाहिए। बेहतर निम्नलिखित बातों में से एक कार्य करें:

  • निशान परीक्षण के रूप में अपने परीक्षण से [Ignore] विशेषता
  • फेंक NotImplementedException के माध्यम से नजरअंदाज कर दिया
  • लिखने Assert.Fail()
  • इस परीक्षण को दूर (अन्यथा आप इस परीक्षा को पूरा करने के लिए भूल सकता है)

यह भी ध्यान रखें कि आपके परीक्षणों में सशर्त तर्क नहीं होना चाहिए। इसके बजाय आपको दो परीक्षण बनाना चाहिए - प्रत्येक कोड पथ के लिए अलग-अलग परीक्षण (नाम के साथ, जो वर्णन करता है कि आप किन स्थितियों का परीक्षण कर रहे हैं)। तो, बजाय लेखन की:

[TestMethod] 
public void TestFooBar() 
{ 
    // Assert foo 
    if (!bar) 
     return; 
    // Assert bar 
} 

लिखें दो परीक्षणों:

[TestMethod] 
public void TestFoo() 
{ 
    // set bar == false 
    // Assert foo 
} 

[Ignore] // you can ignore this test 
[TestMethod] 
public void TestBar() 
{ 
    // set bar == true 
    // Assert bar 
} 
7

आप एक परीक्षण की उपेक्षा और यह पूरी तरह से कोड में अछूता छोड़ सकते हैं।

[TestMethod()] 
[Ignore()] //ignores the test below 
public void SomeTestCodeTest() 
{ 
    //test code here 

} 
+3

मुझे लगता है कि उनका मतलब है कि वह प्रोग्राम के रूप में परीक्षण के अंदर से निर्णय लेते हैं, एनयूनीट के एसम्यू के समान। – Rup

+1

सिर्फ सहमति के लिए: [TestMethod, अनदेखा करें] – BernardV

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