2013-06-20 4 views
5

मैं एक टेस्टकेस लिखने की कोशिश कर रहा हूं जो स्ट्रिंग लेता है और स्ट्रिंग को विभाजित करने की अपेक्षा करता है। मैं एक TestCase में एक List प्रारंभ नहीं कर सकते, तो मैं एक params तर्क के साथ TestCaseSource उपयोग करने की कोशिश, फिर भी मैंसूची या पैराम्स के साथ टेस्टकेस

तर्कों की गलत संख्या

प्रदान की मिल मेरे लिए किसी भी तरह से मेरी अंतिम लक्ष्य पूरा करने के लिए है ?

public IEnumerable<TestCaseData> blah 
{ 
get 
{ 
    yield return new TestCaseData("hello World", "h", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"); 
} 
} 

[TestCaseSource("blah")] 
public void testmethod(String orig, params String[] myList) 

उत्तर

4

हालांकि दोनों अपने testmethod और TestCaseData निर्माता params ले, TestCaseDataparams की व्याख्या अलग ढंग से: यह उन्हें मैप करने के लिए एक-से-एक विधि के मापदंडों को परीक्षण किया जा रहा कोशिश करता है। आपके मामले में, NUnit 12 पैरामीटर के साथ testmethod की अपेक्षा करता है, लेकिन आपकी विधि में केवल दो हैं। यह आपको दिखाई देने वाली त्रुटि का कारण बनता है।

इस समस्या को दूर करने के लिए, आप के रूप में इस निर्माता कॉल को बदलने की जरूरत:

yield return new TestCaseData(
    "hello World" 
, new[] {"h", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"} 
); 

अब आप केवल दो तर्क, दूसरा एक एक सरणी है कि आपके params String[] myList को भेजे जाने चाहिए किया जा रहा गुजर रहे हैं।

+0

मैं कसम खाता हूं कि मैंने कोशिश की और यह ऑब्जेक्ट प्रारंभकर्ता के बारे में चिल्लाया .... शायद मैं पागल हो रहा हूं। धन्यवाद ... यह अब काम करता है! –

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