c# यूनिट परीक्षण के लिए टेस्ट डेटा फ़ाइलों का पथ




unit-testing resharper (3)

मैं वर्तमान में वीएस 2008 में मानक माइक्रोसॉफ्ट यूनिट टेस्ट सूट का उपयोग कर रहा हूं। रीशेपर 4.5 भी स्थापित है। मेरा यूनिट परीक्षण एक testInitialize विधि पर भरोसा करता है जो डेटा फ़ाइल को प्री-लोड करता है। इस टेस्ट डेटा फ़ाइल का पथ अलग-अलग होगा यदि मैं मानक Ctrl-R + Ctrl-T कमांड का उपयोग कर VS 2008 के भीतर यूनिट परीक्षण चलाता हूं, तो Resharper इकाई परीक्षण निष्पादन आदेश बनाम।

मेरी टेस्ट आरंभिक विधि इकाई परीक्षण डेटा फ़ाइलों के सही पथ को कैसे जान सकती है?

अद्यतन करें:

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


आप कह रहे हैं कि परीक्षण फ़ाइल के स्थान पर परीक्षण फ़ाइल का स्थान अलग-अलग होगा, इसलिए मुझे लगता है कि यह परियोजना में शामिल है और डीएल के साथ मिलकर कॉपी किया गया है।

string path = AppDomain.CurrentDomain.BaseDirectory;

यह आपको वह फ़ोल्डर मिलेगा जहां से आप परीक्षण निष्पादित कर रहे हैं।

[संपादित करें]

विजुअल स्टूडियो में।

रिशेर्पर -> विकल्प -> टूल्स -> यूनिट टेस्टिंग -> रन से परिणाम: निर्दिष्ट फ़ोल्डर (या अपनी टेस्ट प्रोजेक्ट के प्रोजेक्ट आउटपुट फ़ोल्डर को बदलें)

जहां आप अपने परीक्षण डेटा के फ़ोल्डर, या निर्दिष्ट फ़ोल्डर के सापेक्ष निर्दिष्ट कर सकते हैं।


(मूल उत्तर भी .NET कोर बहु-लक्ष्य परियोजना आउटपुट पथ स्वीकार करने के लिए अद्यतन किया गया है)

यह मानता है कि आपकी टेस्ट डेटा फाइलें उस फ़ोल्डर में हैं जिन्हें आप रूट "test_Data" फ़ोल्डर के अंदर पैरामीटर "testDataFolder" के रूप में पास करते हैं:

public static string GetTestDataFolder(string testDataFolder)
{
    string startupPath = ApplicationEnvironment.ApplicationBasePath;
    var pathItems = startupPath.Split(Path.DirectorySeparatorChar);
    var pos = pathItems.Reverse().ToList().FindIndex(x => string.Equals("bin", x));
    string projectPath = String.Join(Path.DirectorySeparatorChar.ToString(), pathItems.Take(pathItems.Length - pos - 1));
    return Path.Combine(projectPath, "Test_Data", testDataFolder);
}

क्या आप अपने टेस्ट सूट प्रारंभिक दिनचर्या में स्क्रैच से टेस्ट डेटा नहीं बना सकते? यह किसी विशिष्ट स्थान पर होने पर भरोसा नहीं करेगा और यह अनजान छेड़छाड़ से सुरक्षित होगा।





resharper