2010-09-30 13 views
10

मैंने कुछ यूनिट टेस्ट स्थापित करने और एक्सकोड आदि में लक्ष्य स्थापित करने का समय लिया, और वे कुछ कक्षाओं के लिए बहुत उपयोगी हैं। हालांकि:यूनिट परीक्षण अद्भुत है, लेकिन

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

मुझे एहसास है कि मैं प्रत्येक वर्ग (या कक्षाओं के समूह) के लिए एक और एक्सकोड प्रोजेक्ट का उपयोग कर सकता हूं, लेकिन यह थोड़ा बोझिल लगता है। प्रत्येक के लिए एक और लक्ष्य?

उत्तर

5

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

यदि आप अभी भी यूनिट परीक्षणों का उपयोग करने पर जोर देते हैं, तो आप कुछ समय के लिए अपना जीयूआई दिखा सकते हैं, उदाहरण के लिए, 10 सेकंड। तो परीक्षण केस तब तक चलेगा जब तक कि जीयूआई बंद नहीं हो जाता है या टाइमआउट समाप्त हो जाता है और प्रत्येक परीक्षण निष्पादित करने के लिए एन सेकंड तक ले जाएगा।

+0

धन्यवाद, इसके बारे में "परीक्षण" नहीं किया गया है। तो ये एक ही एक्सकोड परियोजना में, या एक अलग में नए लक्ष्य हैं? –

+0

@Yar: यह व्यक्तिगत वरीयता के मामले की तरह है। इसे एक ही परियोजना में रखना मेरे लिए अधिक सुविधाजनक है। –

2

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

+0

दिलचस्प ... मैं अलग एक्सकोड परियोजनाओं के बारे में सोच रहा था, बस यह सुनिश्चित करना चाहता था कि मैं सचेत हूं :) –

2

मैं यूआई "इकाई परीक्षण" करने के लिए एक दो स्तर दृष्टिकोण ले जाएगा:

  1. यद्यपि कोको/CocoaTouch अभी भी मॉडल-व्यू-ViewModel प्रतिमान से मॉडल-व्यू-कंट्रोलर के करीब हैं, तो आप "व्यू मॉडल" और "प्रस्तुतकर्ता" दृश्य में अपने "व्यू" को तोड़कर टेस्टेबिलिटी लाभ का अधिक लाभ प्राप्त कर सकते हैं (ध्यान दें कि यह एनएसवी व्यू/एनएससीएल जोड़ी की लाइनों के साथ कुछ हद तक है; कोको इंजीनियरों ने यह बहुत समय पहले किया था)। यदि दृश्य एक साधारण प्रस्तुति परत है, तो आप "दृश्य मॉडल" परीक्षण करने वाले यूनिट द्वारा दृश्य के व्यवहार का परीक्षण कर सकते हैं।

  2. अपने विचारों के चित्रण/प्रतिपादन का परीक्षण करने के लिए, आपको या तो मानव परीक्षण करना होगा या प्रतिपादन/पिक्सेल-आधारित परीक्षण करना होगा। Google's Toolbox for Mac में एनएसवीव्स, कैलियर, यूआईवीव्स इत्यादि की पिक्सेल-बाय-पिक्सेल तुलना करने के लिए कई टूल हैं। मैंने कोर प्लॉट प्रोजेक्ट के लिए tool लिखा है ताकि परीक्षण विफलताओं से निपटने और संदर्भ फाइलों को वापस आपके यूनिट परीक्षण में विलय कर दिया जा सके। बंडल थोड़ा आसान है।

+0

http://developer.apple.com/tools/unittest.html –

12

मुझे पता है कि आप परीक्षण UI घटक है कि एक पूरी तरह कार्यात्मक आवेदन की आवश्यकता नहीं है के लिए एक दृष्टिकोण के लिए देख रहे हैं, लेकिन मैं क्या नए UI स्वचालन आईओएस 4.0 में पेश साधन आप की सुविधा देता है से प्रभावित किया गया है कर।

यह उपकरण आपको जावास्क्रिप्ट स्क्रिप्ट का उपयोग अपने एप्लिकेशन के इंटरफ़ेस का इंटरैक्टिव परीक्षण करने की सुविधा देता है, और ऐसा ऐसा करता है जिसके लिए स्क्रीन पर सटीक पिक्सेल मान या स्थिति की जांच करने की आवश्यकता नहीं होती है। यह घटकों के साथ पहचान और बातचीत करने के लिए वॉयसओवर के लिए सिस्टम में अंतर्निहित अंतर्निहित पहुंच-योग्यता हुक का उपयोग करता है।

इस उपकरण का उपयोग करके, मैं उन स्क्रिप्ट परीक्षणों में सक्षम हूं जो पूरी तरह से मेरे आवेदन का प्रयोग करते हैं क्योंकि उपयोगकर्ता इसके साथ बातचीत करेगा, साथ ही साथ विशेष क्षेत्रों पर हथौड़ा और सूक्ष्म स्मृति बिल्डअप की तलाश करेगा।

इंस्ट्रूमेंट्स के इस हिस्से पर प्रलेखन थोड़ा सा स्पैस है, लेकिन मैंने हाल ही में इस विषय को कवर करने वाली कक्षा पढ़ी है जिसके लिए वीडियो available on iTunes U मुफ्त में है (पतन सेमेस्टर में परीक्षण कक्षा की तलाश करें)। मेरा course notes (वूडूपैड प्रारूप में) इसे भी कवर करता है। मैं भी WWDC 2010 video सत्र 306 - "उपकरण के साथ उपयोगकर्ता इंटरफ़ेस परीक्षण स्वचालित करने" की अत्यधिक अनुशंसा करता हूं।

+0

कभी-कभी मुझे आश्चर्य होता है कि मैं SO पर इतने सारे प्रश्न क्यों पूछता हूं, लेकिन थोड़ी देर में मुझे इस तरह की प्रतिक्रिया मिलती है जो एक दरवाजा खुलता है जिसे मैंने नहीं किया ' टी के बारे में भी पता नहीं है। इसके लिए धन्यवाद। –

+0

+1। यह भयानक जानकारी है! –

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