2009-10-14 11 views
5

सभी: मेरे पास एक यूनिट परीक्षण है जो परीक्षण कार्यक्षमता है जिसके लिए इनपुट फ़ाइल की आवश्यकता होती है। यह परीक्षण वीएस 2008 की अंतर्निर्मित इकाई परीक्षण सुविधा का उपयोग करके बनाया गया था।इनपुट फ़ाइल के साथ यूनिट परीक्षण

मेरी समस्या यह है कि फ़ाइल को यूनिट परीक्षण द्वारा खोजने योग्य होने की आवश्यकता है। हालांकि, जब परीक्षण चलता है, तो यह परीक्षण परिणाम फ़ोल्डर के तहत अस्थायी "आउटपुट" निर्देशिका से चलता है। यह मेरी इनपुट फ़ाइल नहीं ढूंढ सकता है।

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

उत्तर

4

फ़ाइल को अपनी परीक्षण असेंबली में संसाधन के रूप में जोड़ें। फिर आप इसे अपने परीक्षण सेटअप में विधानसभा के माध्यम से रनटाइम पर लोड कर सकते हैं। GETManifestResourceStream।

public static class ResLoader 
{   
    public static string AsString<T>(string resName) 
    { 
     using (var reader = new StreamReader(Assembly.GetAssembly(typeof(T)) 
           .GetManifestResourceStream(resName))) 
     { 
      return reader.ReadToEnd(); 
     } 
    } 
} 

टी किसी भी वर्ग अपने परीक्षण विधानसभा में निहित है:

यहाँ एक सुविधाजनक तरीका मैं संसाधनों लोड करने के लिए उपयोग करते हैं।

3

मैं आमतौर पर फाइलों और डेटाबेस परिणामों जैसे बाहरी संसाधनों को अपने यूनिट परीक्षणों में एक्सेस करने की कोशिश करने के बजाय नकल करता हूं। यह करना हमेशा आसान नहीं होता है। हो सकता है कि यदि आप हमें प्रश्न में विधि दिखाते हैं तो हम इसे अधिक इकाई परीक्षण करने में आपकी सहायता कर सकते हैं।

5

आप इसे करने के लिए परिनियोजन इटैम विशेषता का उपयोग कर सकते हैं।

http://www.ademiller.com/blogs/tech/2007/10/gotchas-mstests-deploymentitem-attribute/

वैकल्पिक रूप से आप एक संसाधन के रूप फ़ाइल जोड़ सकते हैं और वहाँ से पढ़ सकता है: वहाँ इसके साथ जुड़े चेतावनियां के एक बहुत हैं। मैं आमतौर पर यही करता हूं।

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