2008-09-24 15 views
5

क्या कोई भी सफलतापूर्वक यूनिट परीक्षण विधियों को सक्षम करने में सक्षम है, जो आवश्यकतानुसार System.Windows.Forms.Form क्लास के साथ हैं?मैं नियंत्रक वर्ग के लिए यूनिट परीक्षण कैसे लिख सकता हूं जो विचारों के लिए Winforms का उपयोग करता है?

मैं हाल ही में एक सी # विनफॉर्म एप्लिकेशन पर काम कर रहा हूं, इसे एक एमवीसी संरचना के साथ बनाने की कोशिश कर रहा हूं। यह काफी मुश्किल है, बशर्ते कि फ्रेमवर्क वास्तव में इस दिमाग में नहीं बनाया गया हो।

हालांकि, जब आप मिश्रण में इकाई परीक्षण फेंकते हैं तो यह भी मुश्किल हो जाता है। मैं यह सुनिश्चित कर रहा हूं कि मेरे नियंत्रक ठोस दृश्य कक्षाओं के साथ नहीं हैं, ताकि मैं यूनिट परीक्षण के लिए स्टब/मॉक का उपयोग कर सकूं। लेकिन फॉर्म क्लास का संदर्भ कहीं कहीं अपरिहार्य है, और इन तरीकों का परीक्षण करने की आवश्यकता है।

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

तो मैं किसी यूनिट परीक्षण चलाने में असमर्थ हूं जो फ़ॉर्म के उप-वर्गों के साथ बहुत अधिक बातचीत करता है, जो मेरे विचार हैं।

क्या वहां कोई है जिसने सफलतापूर्वक इस प्रकार के कोड का परीक्षण किया है? तुमने ये कैसे किया?

क्या ऐसा कुछ अन्य मॉकिंग फ्रेमवर्क आसपास हो सकता है? क्या अन्य मॉकिंग फ्रेमवर्क द्वारा उपयोग की जाने वाली स्ट्रिंग-आधारित विधियां समान बाधाओं के अधीन होंगी? क्या मैं अपने स्वयं के स्पष्ट लंबे हाथ वाले मॉक कक्षाएं लिख सकता हूं, या वर्चुअल सदस्यों की कमी से मुझे खिड़की के व्यवहार को दबाने में सक्षम होने से रोकेंगी?

या क्या कोई तरीका है कि मैंने अपनी कक्षाओं को ढांचे के बारे में नहीं सोचा है ताकि फॉर्म-युग्मित कोड विधियों और छोटी जटिलता के वर्गों में समाप्त हो जाए, जैसे कि मैं स्पष्ट रूप से बिना परीक्षण किए यूनिट परीक्षण कर सकता हूं, मेरे बिना विवेक मुझे इसके लिए मार रहा है?

उत्तर

3

जीयूआई तत्वों के साथ यूनिट परीक्षण के लिए मैंने सुना/उपयोग की जाने वाली सबसे अच्छी विधि Humble Dialog पैटर्न/विधि है। संक्षेप में, फॉर्म केवल इंटरफेस हैं, और सभी वास्तविक काम अन्य वर्गों में किया जाता है। आप इकाइयों की कार्यक्षमता प्रदान करने वाले वर्गों का परीक्षण करते हैं, और फिर उन कक्षाओं में उचित विधियों के लिए बस अपनी जीयूआई घटनाओं को बांधें।

0

मेरा वर्तमान विचार यह है कि मुझे फॉर्म क्लास के साथ विरासत के बजाय संरचना का उपयोग करना पड़ सकता है, जिससे नियंत्रक इसे कम कर सकें।

यह नुकसान है कि हर बार जब मुझे फॉर्म क्लास के सदस्य का उपयोग करने की आवश्यकता होती है जिसे मैंने योजना नहीं बनाई है, तो मुझे इसे अपने दृश्य इंटरफ़ेस में स्पष्ट रूप से जोड़ना होगा।

+0

जो आवश्यक नहीं है, क्योंकि अच्छी योजना के साथ यह अक्सर नहीं होना चाहिए। और यदि यह विश्वसनीय और अच्छी तरह से परीक्षण कोड होने की कीमत है, तो मैं इसे कम कीमत मानता हूं। –

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

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