2013-03-20 11 views
7

मैं CoreGraphics ढांचा का उपयोग कर एक ग्राफिक आवेदन किया है,इकाई परीक्षण कस्टम UIView

जब मैं मॉडल फ़ाइलें मैं समझने के लिए अपने कस्टम UIView के लिए एक इकाई परीक्षण बनाने का तरीका नहीं कर पा रहे के लिए इकाई परीक्षण सूट है,

मेरा लक्ष्य दृश्य के मूल गुणों को सेट कर रहा है और ड्रॉ फ़ंक्शन परिणाम देख रहा है, हालांकि मेरे सेटर्स में मैंने कहा: [स्वयं सेटडिड्सडिस्प्ले]; मेरा 'ड्राआरक्ट' फ़ंक्शन यूनिट टेस्ट से नहीं कहा जा रहा है, हालांकि इसे वास्तविक एप्लिकेशन

यूनिट टेस्ट प्रोजेक्ट में आकर्षित करने का कोई तरीका है? यूई परियोजनाओं का परीक्षण करने के लिए सबसे अच्छा अभ्यास/उपकरण क्या है?

धन्यवाद

उत्तर

2

ड्राइंग परीक्षण करने के लिए एक आसान तरीका पहले ड्राइंग जिस तरह से आप चाहते हैं (ताकि कोई TDD) बनाने के लिए है। फिर एक परीक्षण करें जो ड्राइंग को पीएनजी में प्रस्तुत करता है। बेसलाइन पीएनजी को कैप्चर करने और उस पीएनजी के मुकाबले तुलना करने के बीच टेस्ट कोड स्विच करने के लिए #if सशर्त का उपयोग करें।

प्रतिपादन नए ओएस संस्करणों में थोड़ा बदल सकता है। तो बेसलाइन छवि परीक्षण के लिए एक ओएस के साथ चिपके रहें। जब आपको आवश्यकता हो तो एक नई आधार रेखा पकड़ो।

इस तरह के परीक्षण के साथ, आप फिर अपने ड्राइंग कोड को दोबारा कर सकते हैं। यदि यह एक ही छवि प्रस्तुत करता है, तो आपके नवीनतम परिवर्तन अच्छे हैं। यदि कोई फर्क पड़ता है, तो आपको बदलाव को स्वीकार करना है या नहीं, इसके बारे में एक नजर डालना है। (और यदि आप करते हैं, तो एक नई बेसलाइन कैप्चर करें।)

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

+0

ग्रेट समाधान जॉन! मैं अपने आंखों से कस्टम दृश्य के नतीजे का परीक्षण करता हूं। चूंकि मैं दृश्यों में बहुत कुछ बदलता हूं और मेरा तर्क यहां है कि मुझे यह देखना चाहिए कि यह गलत है या नहीं। फिर भी मैं ऐसी चीजों की तुलना करने के बारे में सोचा नहीं था।शायद मैं इसका परीक्षण करूँ :) और शायद यह आपके अगले स्क्रीनकास्ट के लिए एक विषय हो सकता है * संकेत * :) – Pfitz

+0

@ जोन रीड, क्या आप इस दृष्टिकोण को कार्यान्वित करने के तरीके में अधिक जानकारी या एक लिंक दे सकते हैं? –

+0

मैं आपके जैसा पीएनजी प्रस्तुत करता हूं, लेकिन फिर पीएनजी के लिए सीआरसी का परीक्षण करता हूं। इस तरह, आपको केवल एक बार आंख से सत्यापित करने की आवश्यकता है, और यदि परीक्षण विफल रहता है तो आपको पता है कि सीआरसी बदल गया है और फिर से जांच की आवश्यकता है। – Nanki

2

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

UIAutomation framework (या पसंद के अपने स्वचालन उपकरण) का उपयोग करने के लिए एक और अधिक सफल दृष्टिकोण हो सकता है। यह ऐप वास्तव में चल रहा है (या तो सिम्युलेटर या डिवाइस पर) के दौरान अनुरूपित उपयोगकर्ता इंटरैक्शन स्वचालित करने की अनुमति देता है। UIAutomation में फ़ंक्शन (विभिन्न दृश्य विधियां, और captureRectWithName()) हैं जो आपको विशिष्ट दृश्यों को ढूंढने और स्क्रीनशॉट करने की अनुमति देती हैं। इसके बाद आप इसे सही तरीके से चित्रित कर रहे हैं, यह सत्यापित करने के लिए, ImageMagick's command line compare tool पर इसे हुक कर सकते हैं।

+0

कोई ओसीयूनीट जैसे इकाई परीक्षण ढांचे में कुछ स्वीकृति परीक्षण भी लिख सकता है। ऐसा करने का लाभ यह है कि आप एक विशेष दृश्य जैसे अलग घटकों के चित्र को सत्यापित कर सकते हैं। आप निश्चित रूप से पूरे स्क्रीनशॉट को भी पकड़ सकते हैं, लेकिन इन्हें बदलने की अधिक संभावना है। –

0

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

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

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