2011-05-05 15 views
5

मैं टीडीडी के लिए नया हूं, लेकिन मुझे यकीन नहीं है कि मुझे इंटरफ़ेस का परीक्षण क्यों करना चाहिए?परीक्षण इंटरफ़ेस समझ में आता है?

क्या नीचे दिए गए कोड को समझ में आता है ??

public interface IInterface 
{ 
    int Value { get; } 
} 


[TestMethod] 
public void Test_iinterface_value() 
{ 
    var iinterface = mockery.NewMock<IInterface>(); 
    Expect.Once.On(iinterface).GetProperty("Value").Will(Return.Value(10)); 
    Assert.AreEqual(iinterface.Value, 10, "Doh!"); 
} 

उत्तर

0

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

ज्यादातर मामलों में, यूआई मानक, ढांचे-प्रदान किए गए वर्गों से मामूली परिवर्तनों के साथ बना है, इसलिए जब तक आपको अपने यूआई ढांचे की क्षमताओं में संदेह न हो, या खुद को विकसित कर रहे हों, तो यूनिट परीक्षणों की कोई वास्तविक आवश्यकता नहीं है यूआई कक्षाएं

यदि आप भारी अनुकूलित यूआई कक्षाओं का उपयोग नहीं कर रहे हैं, तो यूनिट परीक्षण किसी अन्य कारण से आवश्यक नहीं होना चाहिए - आपके यूआई कक्षाओं में कोई एप्लिकेशन तर्क नहीं होना चाहिए।

8

जब तक मैं गलत नहीं हूं, ऐसा लगता है कि आप एक नकली वस्तु बना रहे हैं जो इसके लिए पूछे जाने पर मूल्य प्रदान करता है। और फिर आप & मान के लिए पूछते हैं तो आपको यह आश्चर्य होता है (आश्चर्य)। मैं कहूंगा कि इस तरह के परीक्षण लिखने के लिए यह समझ में नहीं आता है, जब तक कि आप मॉकिंग फ्रेमवर्क का परीक्षण नहीं कर रहे हों या आप संकलक से कुछ गंदे चाल चलने की उम्मीद करते हैं।

+0

वास्तव में ... मुझे नहीं लगता कि यह समझ में आता है ... धन्यवाद – DarkVM

0

किसी इंटरफ़ेस के लिए नकली बनाने के पीछे विचार किसी अन्य ऑब्जेक्ट ("परीक्षण के तहत ऑब्जेक्ट") का परीक्षण करना है, जिसके लिए इस नकली को ठीक से बनाया जाना चाहिए या प्रारंभ करना चाहिए। केवल नकली परीक्षण के लिए एक नकली बनाना आईएमएचओ यूनिट परीक्षण के बिंदु को याद करता है।

हालांकि, मैं एक ऐसे मामले के बारे में सोच सकता हूं जहां एक इंटरफ़ेस के लिए परीक्षण लिखना शायद समझ में आता है। यदि आप यूनिट परीक्षणों को केवल परीक्षण उद्देश्यों के लिए ही नहीं लिख रहे हैं, बल्कि कुछ का उपयोग करने के लिए सारांश के लिए भी, तो "इंटरफ़ेस के लिए परीक्षण" यह दिखा सकता है कि IInterface का उपयोग कैसे करें। बेशक, यह अधिक उचित है जब आपके पास एक अधिक जटिल इंटरफ़ेस है जहां इसका उपयोग इतना स्पष्ट नहीं है।

3

इसे the Mockery TDD anti-pattern के रूप में जाना जाता है।

हालांकि, आप परीक्षणों का एक सेट लिखना चाह सकते हैं जो किसी दिए गए इंटरफ़ेस के सभी कार्यान्वयनकर्ताओं पर लागू होता है ताकि यह सुनिश्चित किया जा सके कि अनुबंध ठीक से कार्यान्वित किए जा रहे हैं। उदाहरण के तौर पर, यह Grensesnitt करता है।

0

परीक्षण इंटरफ़ेस समझ में नहीं आता है। एक नकली वस्तु का परीक्षण करना या तो समझ में नहीं आता है - जब तक कि आप एक अमूर्त वर्ग (सी # परिभाषा में सार) की लागू विधि का परीक्षण करने के लिए नकली वस्तु का उपयोग नहीं करते हैं।

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