2014-07-08 6 views
9

के तहत शामिल है मैं यह कहने की कोशिश कर रहा हूं कि एक सूची में एक निश्चित स्ट्रिंग है। चूंकि मुझे स्थिति को आकस्मिक रूप से मूल्यांकन करने की शर्त की आवश्यकता होगी, इसलिए मैंने एक वर्कअराउंड (this blog post के साथ कुछ) का उपयोग किया था।मामले में असंवेदनशील तुलना nUnit

हालांकि, मुझे यह जानना है कि Assert बनाने का तरीका क्यों नहीं लगता है। विधि केस संवेदनशीलता के संबंध में तुलना निष्पादित करती है। या ऐसा करने का कोई तरीका है? (जब मैं इसे googled, मैं सिर्फ हिट NUnit के आधिकारिक पृष्ठ पर Assert.That विधि के लिए बाधाओं पर मिला है।)

+0

आप NUnit का उपयोग कर रहे हैं? यदि ऐसा है, तो इसमें एक 'StringAssert.AreEqualIgnoringCase' विधि शामिल है जिसका आप यहां उपयोग कर सकते हैं। वैकल्पिक रूप से, आप एक और बैंडएड के रूप में अपनी तुलना में दोनों तारों को 'ToUpper() 'कर सकते हैं। – aevitas

+0

@aevitas हम्म ... वह * Assert.SomeSome * दिखता है ... लेकिन अगर ऐसा करने का अनुशंसित तरीका है, तो हो। मेरे प्रश्न-गहराई के अनुसार: कोई विचार क्यों तुलनात्मक नियंत्रण के लिए अतिरिक्त पैरामीटर के साथ * शामिल नहीं है *? –

+0

मेरे पास कोई सुराग नहीं है, इसके लिए एक वास्तविक कारण हो सकता है, लेकिन इसे अनदेखा भी किया जा सकता है। यदि आप वास्तव में 'Assert.Some' दिखने के लिए चिपकना चाहते हैं, तो आप' Assert.IsTrue (string.Equals (बाएं, दाएं, स्ट्रिंग कॉम्परिसन .ऑर्डिनल इग्नोरकेस)) का उपयोग कर सकते हैं; ' – aevitas

उत्तर

11

Assert.Contains में ignoreCase निर्दिष्ट करने के लिए कोई तरीका नहीं है। चाहे यह कुछ ऐसा है जो अनदेखा या इरादा है, मुझे नहीं पता। हालांकि, आप

StringAssert.AreEqualIgnoringCase(left, right); 

अपने यूनिट परीक्षणों में एक ही परिणाम प्राप्त करने के लिए उपयोग कर सकते हैं।

वैकल्पिक रूप से, अगर आप Assert.Foo() "विषय" के साथ रहना चाहते हैं, तो आप कुछ इस तरह कर सकता है:

Assert.IsTrue(string.Equals(left, right, StringComparison.OrdinalIgnoreCase)); 

या, के बाद से Contains व्यवहार करता है सरणियों:

Assert.IsTrue(list.Any(element => element.ToUpper() == "VILTERSTEN")); 

जहां ToUpper() फोन बाएं और दाएं स्ट्रिंग दोनों ऑपरेशंस पर, जो तुलनात्मक रूप से तुलना को मामले को अनदेखा करता है। OrdinalIgnoreCase यह सुनिश्चित करना है कि संस्कृतियों के कुछ कोने के मामलों (पढ़ें: तुर्की) अप्रत्याशित परिणाम नहीं देते हैं। यदि आप उस पर पढ़ने में रुचि रखते हैं, तो the Turkey test पर एक नज़र डालें।

+0

+1। हालांकि आप पक्षी का मतलब था, हे। बहुत दिलचस्प लेख। –

8

NUnit कि प्रदान करता है और इसे पढ़ता है:

Assert.That("red,green,blue".Split(','), Contains.Item("RED").IgnoreCase); 
0

NUnit 3 में, निम्न सिंटैक्स इस्तेमाल किया जा सकता:

Assert.That(new[] {"red", "green", "blue"}, Does.Contain("RED").IgnoreCase); 
संबंधित मुद्दे