NUnit

2012-03-09 15 views
11

के साथ विभिन्न एपडोमेन में यूनिट परीक्षण चलाएं मुझे लगता है कि एक समस्या है, हम जिस अनुप्रयोग का उपयोग कर रहे हैं वह एक निंजा कर्नेल का उपयोग करता है, और इसमें एक विशेष कॉन्फ़िगरेशन होता है जो डब्ल्यूसीएफ कॉल (उपयोगकर्ता नाम, टोकन ...)।NUnit

उस विशेष कॉन्फ़िगरेशन के आधार पर उपयोगकर्ता को ऐप पर अधिकार सौंपा गया है, यह निनजेक कर्नेल में किसी विशेष उदाहरण के माध्यम से संरक्षित है।

हम केवल निनजेक कर्नेल को पुनः संयोजित नहीं कर सकते हैं, हम जो कुछ करना चाहते हैं वह कुछ नूनिट परीक्षण चलाता है, लेकिन उनमें से प्रत्येक को एक अलग ऐप डोमेन में चलाएं (प्रत्येक बार अलग-अलग सेटिंग्स के साथ कर्नेल को दोबारा बनाना)।

मुझे केवल अलग-अलग ऐप डोमेन में संपूर्ण परीक्षण परियोजनाओं को चलाने के तरीके मिलते हैं लेकिन प्रति परीक्षण परीक्षण नहीं करते हैं।

क्या इसे हल करने का कोई तरीका है?

दुर्भाग्य से निंजा कॉन्फ़िगरेशन हमारी तरफ नहीं है, हमें इस तरह से 'लाइव' करना होगा।

उत्तर

5

मुझे नहीं लगता कि एनयूनीट कोड के कुछ हिस्सों को फिर से लिखने के बिना इसे हल करने का कोई तरीका है। यह थोड़ी देर हो गया है क्योंकि मैं एनयूनीट कोड के अंदर रहा हूं, लेकिन मुझे पूरा यकीन है कि मुख्य ऐप डोमेन लोडिंग हिस्सा नहीं बदला है।

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

आप परीक्षण प्रति बार एक बार निनिट चलाने में सक्षम हो सकते हैं और कमांड लाइन पर परीक्षण पास कर सकते हैं, लेकिन यह बदसूरत है और मुझे यकीन नहीं है कि इससे मदद मिलेगी।

एनयूनिट 2.6 में Action Attributes का लाभ उठाना भी संभव हो सकता है, लेकिन आप इसे करने के लिए वहां बहुत सारे काम करने जा रहे हैं।

आप अपनी सेटअप विधि में एक नया ऐप डोमेन भी बनाने और प्रत्येक परीक्षण में इसमें कॉल करने में सक्षम हो सकते हैं। अजीब लेकिन संभव है।

मुझे खेद है कि मेरे पास अधिक पूर्ण उत्तर नहीं है।

1

मुझे आपके प्रश्न के बारे में पूरी तरह से यकीन नहीं है। हालांकि ऐसा लगता है कि आपको किसी प्रकार के कस्टम कार्यान्वयन की आवश्यकता है। क्या आपने कस्टम टेस्ट विशेषताओं पर विचार किया था? फिर एक अलग ऐप डोमेन में चलाने के लिए प्रत्येक विशेषता को कॉन्फ़िगर किया जा सकता है? मैं बस कुछ विचारों को कताई कर रहा हूं, लेकिन ऐसा करने के बेहतर तरीके हो सकते हैं।

+1

XUnit डिफ़ॉल्ट रूप से करता ... –

25

मुझे एक ही चीज़ करने की ज़रूरत है, इसलिए मैंने एक पुस्तकालय बनाया जो मूल रूप से वर्तमान परीक्षण लेता है और इसे एक नए ऐपडोमेन में फिर से निष्पादित करता है। यह NUnit.ApplicationDomain नामक एक नुजेट पैकेज है और open source है।

उदाहरण कोड:

[Test, RunInApplicationDomain] 
public void Method() 
{ 
    Console.WriteLine("I'm in a different AppDomain") 
}