2009-11-21 14 views
50

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

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

अद्यतन:

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

उत्तर

1

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

+1

मुझे एक पुस्तकालय मिला है जो बहुत सारे गणित करता है। मैं यह सुनिश्चित करना चाहता हूं कि मुझे विभिन्न प्रकार के इनपुट के लिए अपेक्षित परिणाम मिलें। प्रत्येक परीक्षण में 2 इनपुट निर्देशांक शामिल होते हैं और परिणामस्वरूप, मुझे प्रति परीक्षण w/9 अंक छोड़ते हैं। मेरे पास प्रतिलिपि/चिपकने के समूह की तुलना में एक इनपुट है जिसमें मेरा इनपुट शामिल है। –

76

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

string path = AppDomain.CurrentDomain.BaseDirectory; 

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

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

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

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

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

+1

भारी धन्यवाद। मैं execingAssembly का उपयोग करने के बारे में बात कर रहा था और मेरे विंडोज प्रोफाइल में गहरी ओर इशारा करते हुए एक अजीब रास्ता मिला। परीक्षण डेटा कहीं भी नहीं था ... – Tormod

+0

ध्यान दें कि यह आपको टेस्ट प्रोजेक्ट के अंदर \ bin \ Debug या \ bin \ release फ़ोल्डर का पथ देता है, जैसे "सी: \ Yadda \ MyProject \ bin \ Debug" –

15

यह मान लिया गया है कि आपके परीक्षण डेटा फ़ाइलों है कि आप एक रूट के अंदर एक पैरामीटर "testDataFolder" "Test_Data" के रूप में पारित एक फ़ोल्डर में हैं (मूल जवाब भी .net कोर बहु ​​लक्ष्य परियोजना उत्पादन रास्तों को स्वीकार करने के लिए अद्यतन) फ़ोल्डर:

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); 
} 
+0

Thats वास्तव में मैं क्या देख रहा हूँ! – TyForHelpDude

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