2013-07-23 10 views
9

का उपयोग कर सी # में डेटा संचालित परीक्षण मेरे पास एक टेस्ट विधि है जो इनपुट के रूप में दो एक्सएमएल फाइलें लेती है और उनकी तुलना करती है। मैं पर Microsoft.VisualStudio.TestTools.UnitTesting ढांचे का उपयोग कर रहा हूं। मैं परीक्षण विधि को संशोधित करना चाहता हूं जैसे कि यह एकाधिक एक्सएमएल फाइलें (दो जोड़ी में एक समय में) लेता है, परीक्षण चलाता है और परिणाम अलग से देता है।एआर

मैंने निम्नलिखित कोड की कोशिश की लेकिन यह केवल एक एकल आउटपुट देता है और जब इनपुट फाइलों की कोई भी जोड़ी परीक्षण विफल हो जाती है।

string[] source = {file1, file2, file3, file4....}; 
string[] target = {fileA, fileB, fileC, fileD....}; 

[Test Method] 
public void TestCase01() 
{ 
     TestLogic testObj = new TestLogic(); //class containing the comparison method 
     for (int i = 0; i < source.Length; i++) 
     { 
      Assert.IsTrue (testObj.VerifyFiles(source[i], target[i])); 
     } 
} 
कुछ शोध मुझे पता चला कि DataSource विशेषता इस्तेमाल किया जा सकता करने पर

। लेकिन मुझे नहीं पता कि DataSource विशेषता में दो सरणी (या एक एकल दो आयामी सरणी) को कैसे पारित किया जाए। मैं परीक्षण और अन्य तृतीय पक्ष ढांचे जैसे NUnit जैसे अंतिम उपाय के रूप में Microsoft.VisualStudio.TestTools.UnitTesting का उपयोग करना पसंद करूंगा।

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

उत्तर

0

बस समतुल्य डेटासेट्स उदाहरण = ऐरे काम कर सकता है। सरणी उदाहरण के रूप में लूप और पंक्ति मान में डेटा स्रोत पंक्तियां।

+5

क्या आप कृपया थोड़ा विस्तार कर सकते हैं? शायद इसके लिए कुछ डेमो कोड दें। – Vijay

7

आप DataSource एक सीएसवी फ़ाइल के रूप में उपयोग कर सकते हैं जिसमें कॉलम कॉलम (स्रोत के लिए एक और लक्ष्य के लिए एक) होगा। फिर अपने परीक्षण में इस प्रकार इसका इस्तेमाल:

[TestClass] 
public class TestCase 
{ 
    [TestMethod] 
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "files.csv", "files#csv", DataAccessMethod.Sequential)] 
    public void TestCase() 
    { 
     TestLogic testObj = new TestLogic(); 

     string source = (string) TestContext.DataRow["source"]; // get the value from the 'source' column 
     string target = (string) TestContext.DataRow["target"]; // get the value from the 'target' column 

     Assert.IsTrue(testObj.VerifyFiles(source, target)); 
    } 

    public TestContext TestContext{ get; set; } 
} 

परीक्षण डेटा स्रोत की पंक्तियों के माध्यम से पुनरावृति जाएगा और प्रत्येक पंक्ति के लिए एक बार चलेंगे। अधिक जानकारी के लिए

here देखें।

+1

बस यह सुनिश्चित करें कि .csv फ़ाइल को स्रोत में चेक किया गया है ... –

+0

इसलिए इस विधि के साथ मुझे दो फ़ोल्डर से फ़ाइलों को पढ़ना होगा, उन्हें अपनी आईडी के आधार पर जोड़ना होगा और फिर जोड़े फ़ाइल नामों को CSV फ़ाइल में सहेजना होगा मैंने टेस्ट केस द्वारा पढ़ा। क्या ऐसा करने के लिए कोई और सीधी विधि है? डेटासोर्स को सीधे सरणी पास करने की तरह? – Vijay

+0

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

2

मैं एक ऐसी ही समस्या थी और अंत में this blog post से सिफारिश,

हम स्थिति के बारे में हमारी सेट स्टोर करने के लिए बेनामी प्रकार की एक सरणी के लिए इस्तेमाल किया, और फिर पाश करने के लिए LINQ के foreach() विधि का इस्तेमाल किया सरणी के माध्यम से और प्रत्येक तत्व के लिए परीक्षण चलाएं।

+0

यह ओपी के मूल समाधान के समान दिखता है जिसे वह टालने की कोशिश कर रहा है, उदाहरण के लिए "यह केवल एक एकल आउटपुट देता है और तब बंद हो जाता है जब इनपुट फाइलों की कोई भी जोड़ी परीक्षण में विफल हो जाती है" –

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