2009-10-20 12 views
25

पर आधारित टेस्ट या टेस्टफिक्चर को अनदेखा करें हमारे पास हमारे समाधान में कुछ एकीकरण परीक्षण हैं। इन परीक्षणों को चलाने के लिए, डेवलपर पीसी पर सिमुलेशन सॉफ्टवेयर स्थापित होना चाहिए। हालांकि यह सॉफ्टवेयर प्रत्येक डेवलपर पीसी पर स्थापित नहीं है। यदि सिमुलेशन सॉफ़्टवेयर स्थापित नहीं है तो इन परीक्षणों को अन्यथा छोड़ दिया जाना चाहिए ==> NullRefException।स्थिति

अब मैं परीक्षण/testfixtures के लिए "सशर्त अनदेखा" करने का एक तरीका ढूंढ रहा हूं। कुछ

की तरह अगर (simulationFilesExist) बाकी testfixture छोड़ testfixture

NUnit ध्यान न दें और स्पष्ट है, लेकिन शांत मैं क्या जरूरत नहीं है कि जैसे कुछ उपयोगी चीजें देते हैं।

धन्यवाद

उत्तर

39

उपयोग अपने परीक्षण या स्थिरता में कुछ कोड विधि यदि सिमुलेशन सॉफ्टवेयर या स्थापित नहीं है का पता लगाता है और Assert.Ignore() कॉल अगर यह नहीं है कि निर्धारित किया है।

[SetUp] 
public void TestSetUp() 
{ 
    if (!TestHelper.SimulationFilesExist()) 
    { 
     Assert.Ignore("Simulation files are not installed. Omitting."); 
    } 
} 

या

[TestFixtureSetUp] 
public void FixtureSetUp() 
{ 
    if (!TestHelper.SimulationFilesExist()) 
    { 
     Assert.Ignore("Simulation files are not installed. Omitting fixture."); 
    } 
} 
+0

त्वरित प्रतिक्रिया के लिए धन्यवाद! लेकिन इसके परिणामस्वरूप एक असफल परीक्षण होगा, वास्तव में मैं जो चाहता हूं वह नहीं। तथ्य यह है कि परीक्षण निष्पादित नहीं किया गया है इसका मतलब यह नहीं है कि इसे असफल होना चाहिए (मेरे मामले में)। –

+3

सं। Assert.Fail के परिणामस्वरूप एक असफल परीक्षण होगा। Assert.Ignore() ठीक वही करता है जो आप करना चाहते हैं। यह रनटाइम पर परीक्षण को अनदेखा कर देता है। दस्तावेज़ों से उद्धरण: "Assert.Ignore विधि आपको गतिशील रूप से रनटाइम पर परीक्षण या सूट को अनदेखा करने की क्षमता प्रदान करता है।" – tvanfosson

+0

आप सही tvanfosson हैं। जब आप केवल टेस्टफिक्चर चलाते हैं तो यह असफल हो जाएगा, लेकिन जब आप टेस्टफिक्स्चर का एक गुच्छा चलाते हैं तो टेस्टफिक्चर को छोड़ दिया जाएगा और अंतिम परिणाम सफलता होगी !! बहुत बहुत धन्यवाद। –

6

NUnit भी आप एक श्रेणी विशेषता आपूर्ति करने के विकल्प देता है। आप अपने परीक्षण कैसे लॉन्च कर रहे हैं, इस पर निर्भर करते हुए, उन सभी परीक्षणों को ध्वजांकित करना उचित हो सकता है जिनके लिए एक ज्ञात श्रेणी (जैसे [श्रेणी ("आवश्यक सिमुलेशन सॉफ्टवेयर") के साथ सिम्युलेटर की आवश्यकता होती है। फिर नुनीत गुई से आप कुछ श्रेणियों को बाहर करना चुन सकते हैं। आप NUnit कमांड लाइन धावक से एक ही चीज़ कर सकते हैं (निर्दिष्ट/बहिष्कृत करें: यदि आवश्यक हो तो आवश्यक सिमुलेशन सॉफ्टवेयर)।

आशा है कि (या tvanfosson द्वारा पिछला उत्तर) मदद करता है।

+1

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

+0

+1। मुझे इसे "Assert.gnore" से कहीं अधिक पसंद है, क्योंकि यह मेरे मामले में सीएलआई को सिर्फ विशेषता और अतिरिक्त ध्वज है। –

1
[SetUp] 
public void TestSetUp() 
{ 
    if (!TestHelper.SimulationFilesExist()) 
    { 
     Assert.Ignore("Simulation files are not installed. Omitting."); 
    } 
} 

आप TestFixtureSet Attribute में हालत के इस प्रकार का उपयोग करें। लेकिन अगर इस स्थिरता ने पैरामीटर परीक्षण किया है तो यदि आप इस स्थिरता के पैरामीटर परीक्षण को अनदेखा करना चाहते हैं तो यह अनंत लूप में जाता है और आपका परीक्षण फांसी दी जाएगी। तो यदि आप शर्त के लिए सेटअप विशेषता का बेहतर उपयोग करते हैं।

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