2012-05-23 13 views
7

के लिए मैं कुछ सहायक वर्गों है कि कुछ विन्यास सेटिंग्स पर निर्भर करता है के लिए कुछ xUnit परीक्षण लिख रहा हूँ, आमतौर पर App.config या क्रियान्वित परियोजना की Web.config में संग्रहीत।App.config XUnit

config इस तरह दिखता है:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="FileNamePattern" value="\\d{8}_\\w{4:20}\.png"/> 
    <!-- and the likes --> 
    </appSettings> 
</configuration> 

मैं XUnit 1.9 चल रहा हूँ जीयूआई धावक (xunit.gui.clr4.exe) और (जेनकींस सीआई सर्वर पर) XUnit सांत्वना धावक के साथ। वर्तमान में, मैं xunit.gui.clr4.exe.config और xunit.console.exe.config फ़ाइलों को मैन्युअल रूप से सेट करके परीक्षण वातावरण में इन कॉन्फ़िगरेशन मानों को "इंजेक्ट" कर सकता हूं); हालांकि, यह थकाऊ और त्रुटि प्रवण है।

मैं भी एक प्रतिस्पर्धा में उन्होंने इन विन्यास सेटिंग्स नकली सकता है। लेकिन 10 अलग-अलग फाइलों में एक ही स्थिरता का उपयोग करना दोहराया जाता है।

इस तरह के परीक्षण परियोजना के लिए एक App.config फ़ाइल प्रदान करने के रूप XUnit के साथ इन विन्यास सेटिंग्स, उपहास करने के लिए एक बेहतर तरीका है?

+1

मैं एक मध्यवर्ती आईसेटिंग बनाउंगा। आप उस में app.config लोड कर सकते हैं। तो आपको मोक जैसे ढांचे का उपयोग करके इंटरफ़ेस को मजाक करना होगा। मैं जितना संभव हो विन्यास फाइलों को दूर करना चाहता हूं। –

उत्तर

10

अपने कोड मान लिया गया है कि वे app.config में हैं, तो xUnit.net होने के लिए उन्हें एक प्रदान (आमतौर पर जब परीक्षण DLL फ़ाइल में हैं द्वारा वहां पर चल रही वायर्ड का समर्थन करता है, यह आप परियोजना आउटपुट में एक AssemblyName.dll.config फ़ाइल प्राप्त मतलब है जो धावक सेटिंग के रूप में लोड होता है यदि यह लोड समय पर मौजूद है)।

जाहिर है कोई नुकसान नहीं पहली जगह में इस तरह के निर्भरता को दूर करने के डि सिद्धांत का उपयोग करने के लिए है, लेकिन मैं कहेंगे कोड के साथ खिलवाड़ मत जाओ इससे पहले कि आप वास्तव में पहले परीक्षण के अंतर्गत समझ गया।

यह सूखा रखने के लिए, एक केंद्रीय स्थान में app.config रख दिया और (संवाद में तीर के माध्यम से खोलें बटन पर) एक कड़ी के रूप में जोड़ें। (हाँ, वहाँ उस के बारे में पसंद करने के लिए नहीं बहुत सारे है -। का उपयोग केवल यदि आप अपने कम से कम बुराई दृष्टिकोण महसूस)


एक बात के लिए बाहर देखने के लिए कि परिवर्तन जब तक आप जीयूआई धावक में पुनः लोड नहीं मिलता है असेंबली को पुनः लोड करने के लिए कहें।

+0

कॉन्फ़िगरेशन ठीक काम करता है जब मैंने इसे TestNamespace.dll.config में बदल दिया और इसे हमेशा बिल्ड निर्देशिका में कॉपी करने के लिए सेट किया। धन्यवाद! स्वचालित रूप से काम –

+0

@ThachMai मैं अगर यह app.config does not के रूप छोड़ने आश्चर्य होगा - मैं व्यक्तिगत रूप से हमेशा यह शक हूँ, लेकिन मैं एक मामले में जहां निर्माण प्रणाली नहीं था वास्तव में प्रति doign/नाम बदलने कभी नहीं मिला है - MSBuild लॉगिंग चालू और एक नज़र डालें (याद रखें कि इसे तब तक नहीं उठाया जाएगा जब तक आप पुनः लोड नहीं करते)। –

+0

मैं इसे आजमाउंगा और अगले मंगलवार को आपके पास वापस आऊंगा जब मेरे पास स्रोत तक पहुंच होगी। –