2016-04-07 9 views
7

मैं वर्तमान में एनआईएनआईटी 2 के बजाय एनयूनिट 3 का उपयोग करने के लिए कुछ यूनिट परीक्षणों को फिर से लिख रहा हूं और कुछ आवेषणों को तनाव-आधारित आवेषणों में बदलने की आवश्यकता है।बाधा आधारित आक्रमणों के साथ IsNotNullOrEmpty पर जोर देने के लिए पठनीयता बढ़ाएं

Assert.IsNullOrEmpty(result); 

मैं करने के लिए बदल दिया है कि: मैं निम्नलिखित का दावा है

Assert.That(result, Is.Null.Or.Empty); 

हालांकि, मैं पूरी तरह पठनीयता से प्रसन्न जब IsNotNullOrEmpty जोर देते हुए नहीं कर रहा हूँ:

Assert.That(result, Is.Not.Null.And.Not.Empty); 

मेरे वर्तमान सुझाव निम्नलिखित स्थैतिक वर्ग बनाना है:

public static class Text 
{ 
    public static EmptyConstraint IsNullOrEmpty => Is.Null.Or.Empty; 

    public static EmptyConstraint IsNotNullOrEmpty => Is.Not.Null.And.Not.Empty; 
} 

उपयोग:

Assert.That(result, Text.IsNotNullOrEmpty); 

यह एक कस्टम बाधा को शुरू करने की कीमत पर बेहतर पठनीयता प्रदान करता है। क्या एक ही दावा करने का एक मानक तरीका है, या मुझे इसके बजाय Is.Not.Null.And.Not.Empty का उपयोग करना जारी रखना चाहिए?

+0

इस प्रश्न का उत्तर उद्देश्य से दिया जा सकता है। गैर-व्यक्तिपरक शर्तों में प्रश्न को पुन: स्थापित करने के लिए शरीर को संपादित किया; फिर से खोलने के लिए मतदान। – dasblinkenlight

उत्तर

7

Is.Null.Or.Empty के लिए आपका दावा Test कक्षा के बिना पूरी तरह से ठीक पढ़ता है। इसके अलावा, जब यह दावा विफल हो जाता है, तो आप जानते हैं कि वास्तव में क्या हुआ: आपके पास वैध string ऑब्जेक्ट है जो खाली नहीं है।

जिन मुद्दों को मैं अपनी अस्वीकृति के "डीमोर्गन-ized" संस्करण के साथ देखता हूं, यानी Is.Not.Null.And.Not.Empty, यह बहुत लंबा है, और यह लगभग Is.Null.Or.Empty करता है जैसा कि लगभग अच्छी तरह से नहीं पढ़ता है।

हालांकि, बल्कि इसके लिए एक अलग बाधा बनाने की तुलना में, मैं अपने हिस्से को अलग से

Assert.That(result, Is.Not.Null); 
Assert.That(result, Is.Not.Empty); 

कारण की तरह यह है कि दो विफलता की स्थिति ओवरलैप नहीं मैं यह करना होगा, पर जोर होता है, यानी यानी resultnull हो सकता है, या यह खाली हो सकता है, लेकिन यह एक ही समय में दोनों नहीं हो सकता है। एक एकल यौगिक दावा इन दो परिस्थितियों के बीच अंतर नहीं करता है, इसलिए आप यह देखने के लिए एक डीबगर के लिए जा रहे हैं कि resultnull या खाली था।

दूसरी तरफ अलग-अलग दावे आपको बताते हैं कि बहुत पठनीय रहते हुए क्या होता है। वे प्रति दावा एक अतिरिक्त लाइन "लागत"; मुझे लगता है कि संभावित असफलताओं के बारे में अधिक सटीक जानकारी प्राप्त करने के लिए यह एक उचित लागत है।

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