2012-03-16 18 views
6

के साथ WinForms/CompositeUI GUI का परीक्षण करना मुझे एक सी # डेस्कटॉप एप्लिकेशन (CompositUI/WinForms) मिला है। यह एप्लिकेशन SmartClient का उपयोग कर एक webservice से जोड़ता है। मेरा काम SpecFlow और White frameworks का उपयोग करके इस एप्लिकेशन को परीक्षण (रीट्रोफिट) परीक्षण करना है। जीयूआई का परीक्षण करने के लिए, मुझे webservice कॉल का नकल करने की आवश्यकता है। जिस वर्ग से जुड़ता है वह स्प्रिंग.net के माध्यम से इंजेक्ट किया जा रहा है। मेरा कार्य परीक्षण के दौरान webservice कॉल का नकल करने में सक्षम होने वाले एप्लिकेशन का परीक्षण करना है, जिसका अर्थ है कि, मेरा परीक्षण कोड मेरे मॉक के नियंत्रण में होना चाहिए। समस्या: GUI प्रारंभ करने वाली विधि बस उस थ्रेड पर नियंत्रण वापस नहीं कर रही है जिसने इसे बुलाया है। नतीजतन, हम जीयूआई और मोजे को नियंत्रित नहीं कर सकते हैं।SpecFlow, White, Spring और MS Test

तो सवाल इस बिंदु पर मैं कर रहे हैं:

  • यह संभव है (और यदि ऐसा है तो - यह कैसे करना है) अलग थ्रेड में जीयूआई शुरू करने और नियंत्रण वापस परीक्षण धागा करने के लिए?

  • जीयूआई परीक्षण चलाने की अन्य संभावनाएं क्या होंगी, जो मुझे इंजेक्शन पर नियंत्रण रखने की अनुमति देगी?

उत्तर

-1

आवश्यक .net UI अपने एक MVVM टूलसेट का उपयोग करें या तो आप अपने समाधान कॉन्फ़िगर यूआई द्वारा इस्तेमाल किया तरीकों का परीक्षण कर सकते हैं एक बनाने के लिए करने जा परीक्षण करने के लिए। .NET के लिए कई ढांचे हैं जो इसका समर्थन करते हैं Wikipedia पर पाए जा सकते हैं।

सभी एमवीवीएम यूआई परीक्षणों के अंतर्गत मूल बातें एक डीआई/आईओसी फ्रेमवर्क हैं, जिन्हें आपको भी चुनना होगा।

अनिवार्य रूप से आप एक व्यूमोडेल क्लास बनाते हैं जिसका आप परीक्षण कर सकते हैं। WPF के साथ यूनिट परीक्षण के उदाहरण के लिए - http://www.markermetro.com/2010/07/technical/mvvm-light-and-unit-testing-example/

अब कुछ सोचाचास सोचने के लिए। सबसे पहले .NET WinForms में एम $ (धन्यवाद एक बंच!) द्वारा बड़े बदलाव नहीं होंगे और एक्सएएमएल/डब्ल्यूपीएफ में कोई अपग्रेड पथ नहीं है। एमएस $ ने संकेत दिया है कि डेवलपर्स को आगे बढ़ने वाले डेस्कटॉप प्रोजेक्ट्स के लिए डब्ल्यूपीएफ यूआई डिजाइनरों का उपयोग शुरू करना चाहिए। WinForms का समर्थन करने वाले एमवीवीएम फ्रेमवर्क की संख्या सीमित है, इसलिए आपको DI के माध्यम से अपना खुद का रोल करना पड़ सकता है, लेकिन इस विषय पर निम्नलिखित StackOverflow चर्चा देखें।

द्वितीय रूप से .NET फॉर्म को विंडोज़ से विंडोज फोन पर मेट्रो यूआई कार्यान्वयन के मुद्दों के लिए वेब यूआई में। माइक्रोसॉफ्ट के पी & पी टीम ने xaml/WPF के लिए प्रिज्म बनाया है कुछ निर्भरता इंजेक्शन एंटी पैटर्न (सेवा लोकेटर बीएडी है) Mark Seemann and his Dependency Injection in .NET पुस्तक के अनुसार। प्रिज्म को मेट्रो और फिर से आर्किटेक्टेड, अपनाने वाले अपमानजनक और इसे आंशिक रूप से अनावश्यक बनाने के लिए अपग्रेड नहीं किया गया है। अनिवार्य रूप से मेरा मुद्दा यह है कि, अपने एप्लिकेशन यूआई को आगे बढ़ने की अनुमति देने के लिए एक ढांचा प्राप्त करना कठिन होगा।

+0

यह प्रश्न का उत्तर नहीं देता है। वह यूनिट परीक्षण प्रस्तुति तर्क के बारे में बात नहीं कर रहा है, वह वास्तव में परीक्षण करना चाहता है बटन को क्लिक करें और टेक्स्ट बॉक्स में टाइप करें। आप ui (एमवीवीएम, एमवीपी, कोड पीछे) कैसे बनाते हैं, इस तरह के परीक्षण के लिए अप्रासंगिक है। – Andy

+0

इसके अलावा Winforms समर्थित है, लेकिन इसमें बड़े बदलाव नहीं होंगे। डब्ल्यूपीएफ विंडोज डेस्कटॉप ऐप के लिए नए डेस्कटॉप ऐप्स (वे दूर नहीं जा रहे हैं) और एक्सएमएल/विनर्ट या जीत/जेएस ऐप्स बनाने का पसंदीदा तरीका होगा। – Andy

+0

@ एंडी ने प्रौद्योगिकी को स्पष्ट करने के लिए संशोधित उत्तर दिया। –

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