2013-07-05 5 views
8

पर सापेक्ष पथ मेरे पास एक समाधान है जिसमें कंसोल एप्लिकेशन और यूनिट परीक्षण है।इकाई परीक्षण परियोजना सी #

var target = new Validator(); 
var targetFile = @"C:\Folder\SubFolder\AnotherSubFolder\Development\DEV\src\UnitTest\TargetFolder\file.xml"; 

bool actual = target.Validate(targetFile); 
Assert.AreEqual(true, actual); 

सत्यापनकर्ता, सांत्वना आवेदन परियोजना में स्थित है, जबकि मेरी file.xml इकाई परीक्षण परियोजना के अंदर फ़ोल्डर में स्थित है है।

यह यूनिट परीक्षण गुजर रहा है, हालांकि मैं यह सुनिश्चित करना चाहता हूं कि जब मैं इसे अपने टीएफएस या सर्वर बनाने में जांचूं, तो यह अभी भी मेरे लक्ष्यफाइल का पता लगा सकता है।

मैं लक्ष्य के पथ को कैसे बदलूं?

अग्रिम धन्यवाद!

+0

आप किस इकाई परीक्षण ढांचे का उपयोग कर रहे हैं? –

+0

फ्रेमवर्क? यह 4.0 – Gerald

उत्तर

0

Validator का स्थान प्रासंगिक नहीं होना चाहिए। कोई सापेक्ष पथ उस निर्देशिका के सापेक्ष होना चाहिए जो आपके परीक्षण अनुप्रयोग को निष्पादित कर रहा है, इसलिए वहां से targetFile को एक सापेक्ष पथ होने के लिए सेट करें। फिर सुनिश्चित करें कि आप अपने देव मशीन पर बल्ब सर्वर पर समान सापेक्ष स्थान से अपने परीक्षण चला रहे हैं।

बोनस टिप: का उपयोग Assert.IsTrue(actual);

5

आप नीचे दिए गए जैसे फ़ोल्डर संदर्भित कर सकते हैं।

"..\..\TargetFolder\file.xml" 
7

अगर मैं आपकी समस्या का सही ढंग से समझ में आया, यह अच्छा नहीं है कि उत्पाद कोड (कंसोल आवेदन में) परीक्षण परियोजना में एक आइटम पर निर्भर करता है, तो मैं उत्पाद कोड परियोजना के लिए file.xml स्थानांतरित करने के लिए सुझाव देते हैं।

अपने पथ समस्या को हल करने के लिए, मुझे लगता है कि सबसे अच्छा तरीका के रूप में कॉपी आउटपुट निर्देशिका संपत्ति को कॉपी उपयोग करने के लिए है हमेशा या कॉपी नए, जो आप वी.एस. गुण विंडो में मिल सकता है।

निम्नलिखित चरणों को देखें।

  1. उत्पाद प्रोजेक्ट (उदाहरण के लिए डेटा फ़ोल्डर) में file.xml में डालने की आवश्यकता होने पर फ़ोल्डर बनाएं।
  2. फ़ोल्डर में file.xml रखो।
  3. file.xml के लिए वीएस प्रॉपर्टी विंडो पर जाएं।
  4. सेट कार्रवाई बिल्डकोई नहीं कॉपी करने के लिए और कॉपी आउटपुट निर्देशिका करने के लिए हमेशा या कॉपी नए है।
  5. बिल्ड और के रूप में

    Assert.IsTrue(File.Exists(@"Data\file.xml")); 
    

    इकाई परीक्षण कर इस मामले में, वी.एस. स्वचालित रूप से डेटा फ़ोल्डर file.xml के साथ परीक्षण poject के उत्पादन फ़ोल्डर के अंतर्गत कर देगा।

+0

है जो मैं वर्तमान में अभी कर रहा हूं। हालांकि, मुझे नहीं पता कि लक्ष्य फ़ाइल के पथ को एक सापेक्ष पथ कैसे बदलना है ताकि मैं सुनिश्चित कर सकूं कि इसे बिल्ड सर्वर पर कोई समस्या नहीं होगी। – Gerald

+1

मुझे लगता है कि महत्वपूर्ण परियोजना परीक्षण परियोजना में वर्तमान स्थान को पकड़ना है। आम तौर पर, सही स्थिति परीक्षण प्रोजेक्ट के आउटपुट फ़ोल्डर (bin \ debug) के साथ समान होती है। परीक्षण ढांचे के अनुसार, आउटपुट फ़ोल्डर कहीं और कॉपी किया जा सकता है, जिसे छाया प्रतिलिपि कहा जाता है। हालांकि, इस मामले में कोई समस्या नहीं है क्योंकि सापेक्ष पथ टूटा नहीं है। –

+0

उस जिन-वूक के लिए धन्यवाद! बहुत उपयोगी। – Gerald

2

मुझे मेरी समस्या का हल पता चला।मैं इस प्रयोग किया है:

"..\..\..\TestFileFolder\myFile.xml" 
2

सबसे आसान तरीका है एमएस यूनिट टेस्ट इकाई परीक्षण वर्ग के परीक्षण में एक [DeploymentItem] उपयोग करने के लिए है। अधिक जानकारी के लिए http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(v=vs.100).aspx देखें। How can I use a data file in a VS 2008 unit test?

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