2013-05-16 6 views
13

में इकाई परीक्षण चलाने के लिए कैसे मैं इकाई परीक्षण के दौरान अपने समाधान संरचना में एक फ़ाइल तक पहुंचने का प्रयास कर रहा हूं। आउटपुट निर्देशिका के रूप में मेरी यूनिट टेस्ट प्रोजेक्ट में bin\Debug\ है। इसलिए मैंने यह मान लिया है कि मेरे यूनिट टेस्ट में Path.GetFullPath(".") मुझे यह बिन फ़ोल्डर देगा। लेकिन यह क्या करता है यह मुझे पथ के रूप में एक अस्थायी स्थान देता है।बिन फ़ोल्डर

C:\Users\[username]\AppData\Local\Temp\TestResults\[username]_[machine_name] 2013-05-16 08_31_07\Out 

तो जाहिर है कि मेरा यूनिट परीक्षण मेरे समाधान में फ़ाइलों तक नहीं पहुंच सका। अगर कोई जानता है कि यूनिट टेस्ट प्रोजेक्ट के बिन फ़ोल्डर में यूनिट टेस्ट चलाने के लिए कृपया मदद करें।

उत्तर

11

आप इसे .runsettings फ़ाइल का उपयोग करके और <DeploymentEnabled>false</DeploymentEnabled> सेट करके कर सकते हैं। "टिप्पणियां" अनुभाग here देखें। हालांकि, यदि आप एक .testsettings फ़ाइल का उपयोग कर रहे हैं, तो आप ऐसा नहीं कर सकते हैं, और यदि आप किसी भी फाइल का निरीक्षण करने में सक्षम होना चाहते हैं जो आपके परीक्षणों को असफल रन के बाद पढ़ या लिखते हैं, तो हो सकता है कि आप ऐसा नहीं कर सकें, क्योंकि वे हो सकते हैं आगे परीक्षण आदि

एक अन्य विकल्प तैनाती आइटम, जो DeploymentItemAttribute के माध्यम से या अपने .testsettings फ़ाइल के माध्यम से किया जा सकता है उपयोग करने के लिए है द्वारा दूषित। विशेषता तंत्र पसंद किया जाता है, और मूल रूप से, परीक्षण तरीकों है कि आप के लिए आप निम्न कर फाइलों को तैनात करने की जरूरत पर:

[DeploymentItem(@"source", @"target")] 
public void Test1() {} 

कहाँ स्रोत है निर्माण उत्पादन फ़ोल्डर में या तो एक पथ रिश्तेदार, या एक निरपेक्ष पथ , और लक्ष्य या तो एक पथ है जहां से परीक्षण चलते हैं, या एक पूर्ण पथ है। आप लक्षित पैरामीटर को छोड़ सकते हैं, इस मामले में यह "।" का लक्ष्य मान लेगा, यानि वह फ़ोल्डर जहां से परीक्षण चल रहे हैं। इसके लिए दस्तावेज़ here

+1

उत्तर के लिए धन्यवाद। हो सकता है कि मैंने अपना प्रश्न स्पष्ट नहीं किया हो। मैं बिन \ डीबग फ़ोल्डर में इकाई परीक्षण चलाने के लिए चाहता हूं, उस अस्थायी स्थान पर नहीं। क्योंकि यूनिट टेस्ट के दौरान मैं एक फाइल तैयार करूँगा जिसका उपयोग मेरे आवेदन द्वारा किया जाएगा। इसलिए इसके लिए मुझे इकाई परीक्षण के दौरान समाधान में से किसी एक फ़ोल्डर तक पहुंचने की आवश्यकता है। चूंकि इकाई परीक्षण गतिशील अस्थायी स्थान पर चल रहा है क्योंकि इसे हासिल करना वाकई मुश्किल है। – Geethanga

+0

पहला भाग देखें ..."<परिनियोजन सक्षम> गलत", और रन सेटिंग्स फ़ाइल के बारे में दस्तावेज़। इससे आपको बिन \ डीबग फ़ोल्डर में भागने की अनुमति मिल जाएगी। – guysherman

+0

बहुत बहुत धन्यवाद! मेरे .testsettings में परिनियोजन सक्षम अक्षम और [परिनियोजन Item (TestDataFolder, "TestData") के माध्यम से तैनाती] काम किया। –

2

एक और विकल्प जो आपके अनुरूप हो सकता है वह एमएसटीएस्ट के बजाय एनयूनीट का उपयोग कर रहा है। उस स्थिति में परीक्षण बिन \ डीबग निर्देशिका

+1

यह सच नहीं है, मैंने कोशिश की और मुझे एक ही व्यवहार पसंद है। गलत साबित होने के लिए प्यार। इससे कोई फर्क नहीं पड़ता कि आप एमएसटेस्ट या एनयूनीट का उपयोग करते हैं। – IbrarMumtaz

+2

मेरा सुझाव है कि आप इसे साबित करने के लिए एक नमूना समाधान (जैसे मैंने किया) बनाएं (यदि आपको कोई मदद चाहिए तो मुझे आपको स्रोत कोड मेल करने में खुशी होगी)। मैं 2 संस्करण चला गया - 1 में mstest और 1 नुनिट में। नूनिट में चलते समय मुझे यह मिला - "डी: \ work \ rampup \ nunit-test \ NunitTest \ NunitTest \ bin \ Debug" जबकि mstest में मुझे यह मिला - "सी: \ उपयोगकर्ता \ ron \ AppData \ Local \ Temp \ TestResults \ ron_RON-PC 2013-07-29 16_38_27 \ आउट " –

+0

जो एक अच्छी जगह की तरह दिखता है! शायद मुझे कोशिश करनी होगी कि मेरे घर देव पर्यावरण ठीक से सेटअप नहीं है शायद मैं नहीं जानता। – IbrarMumtaz

-1

में निष्पादित किए जाते हैं यदि आप फ़ाइलों या संसाधनों को एक्सेस करने का प्रयास कर रहे हैं जिन्हें आप डिफ़ॉल्ट फ़ोल्डर में रखते हैं, तो आप उन्हें असेंबली स्थान की स्पष्ट निर्देशिका देने का प्रयास कर सकते हैं। एक उदाहरण:

string dataSource = AppDomain.CurrentDomain.BaseDirectory + "TestDb.mdb"; 

AppDomain.CurrentDomain.BaseDirectory आमतौर पर वास्तविक विधानसभा स्थान, है जो आप क्या करने की योजना बना रहे थे करने के लिए हल करता है।

1

यह किसी भी व्यक्ति के लिए एक अद्यतन है जो विजुअल स्टूडियो 2015 का उपयोग कर इस समस्या में भाग ले रहा है। @guysherman के अनुरूप, मेरे समाधान एक्सप्लोरर में समाधान फ़ाइल के तहत मेरे पास एक समाधान आइटम फ़ोल्डर है, और एक .testrunconfig फ़ाइल होनी चाहिए । यदि आप विजुअल स्टूडियो का उपयोग करके इसे खोलते हैं, तो डिप्लॉयमेंट सक्षम करें शीर्ष पर एक चेकबॉक्स है जिसे आप अनचेक कर सकते हैं।

मुझे वही समस्या थी जहां मेरे परीक्षण तैनात किए जा रहे थे। डीएलएल परीक्षण परीक्षण फ़ोल्डर में हर बार जब मैं यूनिट परीक्षण चलाता था, लेकिन .config फ़ाइल जिसे निष्पादन योग्य संदर्भों के साथ शामिल किया गया था, एक और common.config, जो तैनात नहीं था बाकी सब कुछ, इसलिए मैंने कभी भी अपने SQL सर्वर से कनेक्ट नहीं किया क्योंकि यह common.config में निर्दिष्ट था। सक्षम परिनियोजन विकल्प को अनचेक करने से प्रोजेक्ट में निर्दिष्ट बिन फ़ोल्डर से सीधे मेरे परीक्षण चलाए गए।

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