टेस्ट ड्रिवेन डेवलपमेंट का मतलब है कि जब आपके सारे टेस्ट पास हो जाएंगे तो आप कोडिंग बंद कर देंगे।
यदि आपके पास संपत्ति के लिए कोई परीक्षण नहीं है, तो आपको इसे क्यों लागू करना चाहिए? यदि आप "अवैध" असाइनमेंट के मामले में अपेक्षित व्यवहार का परीक्षण / परिभाषित नहीं करते हैं, तो संपत्ति क्या करना चाहिए?
इसलिए मैं पूरी तरह से हर व्यवहार का परीक्षण करने के लिए एक कक्षा का प्रदर्शन करना चाहिए। जिसमें "आदिम" गुण शामिल हैं।
इस परीक्षण को आसान बनाने के लिए, मैंने एक सरल NUnit बनाया, TestFixture
जो मान प्राप्त करने / प्राप्त करने के लिए विस्तार बिंदु प्रदान करता है और मान्य और अमान्य मानों की सूची लेता है और यह जाँचने के लिए एकल परीक्षण करता है कि संपत्ति सही काम करती है या नहीं। एक एकल संपत्ति का परीक्षण इस तरह दिख सकता है:
[TestFixture]
public class Test_MyObject_SomeProperty : PropertyTest<int>
{
private MyObject obj = null;
public override void SetUp() { obj = new MyObject(); }
public override void TearDown() { obj = null; }
public override int Get() { return obj.SomeProperty; }
public override Set(int value) { obj.SomeProperty = value; }
public override IEnumerable<int> SomeValidValues() { return new List() { 1,3,5,7 }; }
public override IEnumerable<int> SomeInvalidValues() { return new List() { 2,4,6 }; }
}
लैम्ब्डा और विशेषताओं का उपयोग करके इसे और भी अधिक कॉम्पैक्ट रूप से लिखा जा सकता है। मैं इकट्ठा MBUnit भी उस तरह की चीजों के लिए कुछ देशी समर्थन है। हालांकि मुद्दा यह है कि उपरोक्त कोड संपत्ति के इरादे को पकड़ लेता है।
पुनश्च: संभवत: प्रॉपर्टीस्ट के पास यह जांचने का एक तरीका होना चाहिए कि ऑब्जेक्ट पर अन्य गुण नहीं बदले। हम्म .. ड्राइंग बोर्ड पर वापस।