यूनिट टेस्ट ऑब्जेक्टिव-सी कोड का सबसे अच्छा तरीका क्या है?


330

यूनिट टेस्ट ऑब्जेक्टिव-सी कोड में क्या फ्रेमवर्क मौजूद हैं? मैं एक रूपरेखा चाहूंगा जो Apple Xcode के साथ अच्छी तरह से एकीकृत हो।


मेरी जानकारी के अनुसार, यहाँ कुछ उत्तर पुराने हैं। Apple के पास अब XCTest है, जो आपको इस मुद्दे को हल करने में मदद करता है। मुझे लगता है कि अधिकांश उत्तरों को अद्यतन करने की आवश्यकता है।
Honey

जवाबों:


317

Xcode में XCTest शामिल है, जो OCUnit , एक Object-C Unit टेस्टिंग फ्रेमवर्क के समान है, और आपके प्रोजेक्ट की निर्माण प्रक्रिया के हिस्से के रूप में XCTest- आधारित यूनिट टेस्ट चलाने के लिए पूर्ण समर्थन है। Xcode के यूनिट टेस्टिंग सपोर्ट में Xcode ओवरव्यू: यूनिट टेस्ट का उपयोग करके वर्णन किया गया है ।

Xcode 2 दिनों में वापस, मैंने वेबलॉग पोस्ट की एक श्रृंखला लिखी कि Xcode यूनिट परीक्षण के साथ कुछ सामान्य कार्य कैसे करें:

XCTest के बजाय OCUnit का उपयोग करने के बावजूद, अवधारणाएं काफी हद तक समान हैं।

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

यह न केवल आपके मॉडल-स्तरीय कोड बल्कि आपके नियंत्रक-स्तर और यहां तक ​​कि दृश्य-स्तरीय कोड के लिए परीक्षण-संचालित विकास करना संभव बनाता है।


5
पीटर होसी ने लेक फ़ॉरेस्ट में कोको यूनिट टेस्टिंग पर एक अच्छी प्रस्तुति भी दी, दिसंबर में सीए कोकोहेड्स की बैठक। यहाँ इसका एक वीडियो है: vimeo.com/2725498
ग्रांट लिम्बर्ग

1
जब मैंने लगभग एक साल पहले iOS सामान शुरू किया तो मैंने पाया कि OCUnit में (मेरे लिए) एक गंभीर खामी थी - मैं इसे सिम्युलेटर या डिवाइस पर नहीं चला सकता था। तब से शायद यह बदल गया है - मैंने जाँच नहीं की है, लेकिन मैं उस कारण से केवल GHUnit का उपयोग कर रहा हूँ।
drekka

1
क्या इस विषय पर कोई आधिकारिक Apple डेवलपर वीडियो है? मैं WWDC 2011 और 2010 के माध्यम से चला गया, लेकिन कोई भी नहीं मिला ... अजीब है क्योंकि परीक्षण महत्वपूर्ण है हाँ?
रॉबर्ट

4
Xcode Unit टेस्टिंग गाइड लिंक Xcode Unit टेस्टिंग गाइड
स्टीवन ग्रीन

5
Xcode 5 में अब XCTest है क्या इसमें अभी भी OCUnit शामिल है? क्या आप XCode 5 की जानकारी के साथ अपने उत्तर को अपडेट करेंगे
BrightIntelDusk

50

की जाँच करें GHUnit गेब्रियल Handford द्वारा:

"GHUnit के लक्ष्य हैं:

XCode के भीतर इकाई परीक्षण चलाता है, जिससे आप XCode डीबगर का पूरी तरह से उपयोग कर सकते हैं। एक साधारण जीयूआई आपको अपने परीक्षणों की कल्पना करने में मदद करने के लिए। स्टैक के निशान दिखाएं। एक सरल (या नहीं) लक्ष्य सेटअप के साथ एक फ्रेमवर्क (कोको ऐप के लिए) के रूप में स्थापित किया जा सकता है; या आपके iPhone प्रोजेक्ट में पैकेज करना आसान है। "


5
GHUnit के लिए +1! मैं iPhone विकास के लिए नया हूं और मैं ईमानदारी से कह सकता हूं कि मैंने OCUnit के निरपेक्ष दुःस्वप्न और GTM के हल्के माइग्रेन की तुलना में GHUnit को तैयार किया था और बिना किसी उपद्रव (निर्देश के परिपूर्ण) के साथ चल रहा था। GHUnit प्रयोज्य और आसानी के लिए जीतता है!
टिम रेड्डी

3
ध्यान दें कि यह उत्तर और साथ वाली टिप्पणी कुछ समय पहले लिखी गई थी। Xcode को OCUnit- आधारित परीक्षणों के लिए अब बेहतर समर्थन मिला है, जिससे परीक्षणों को सेट करना और उन्हें डीबगर में चलाना आसान हो गया है।
क्रिस्टोफर जॉनसन

1
तब से इस परियोजना को हटा दिया गया है।
BigHeadCreations



12

ध्यान दें कि मैक (GTM) प्रोजेक्ट के लिए Google टूलबॉक्स केवल Apple के SenTestingKit फ्रेमवर्क को बढ़ाता / बढ़ाता है (जो कि, OCUnit पर आधारित है)। जैसा कि वे परियोजना स्थल पर कहते हैं:

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

उपयोगकर्ता-इंटरफ़ेस परीक्षण के बारे में निम्नलिखित टिप्पणी पर ध्यान दें:

उपयोगकर्ता इंटरफ़ेस इकाई परीक्षणों के लिए GTM का व्यापक समर्थन है। यह लगभग सभी मानक कोको / यूकीट यूआई ऑब्जेक्ट्स की इमेजिंग और / या आंतरिक स्थिति दोनों का परीक्षण करने का समर्थन करता है, और यह आपके यूआई ऑब्जेक्ट्स के लिए इस समर्थन का विस्तार करना आपके लिए आसान बनाता है।

इसका उपयोग करने के निर्देशों के लिए उनका " कोड सत्यापन और यूनिट परीक्षण " पृष्ठ देखें ।


12

मैं इस नतीजे पर पहुंचा कि GHUnit ऑब्जेक्टिव-सी के लिए सबसे उन्नत परीक्षण ढांचा है। मैंने अपने ब्लॉग पर टेस्टिंग फ्रेमवर्क का एक राउंडअप किया है । यह तैनाती (iPhone, सिम्युलेटर या मैक ओएस देशी) और मुखर क्षमताओं के मामले में सबसे अधिक लचीला है। क्योंकि यह GTM पर आधारित है, इसलिए यह SenTestingKit पर GTM के सभी लाभों को विरासत में मिला है, लेकिन इसके अलावा भी बहुत कुछ जोड़ता है। एक और बोनस यह है कि इसे बहुत सक्रिय रूप से बनाए रखा जा रहा है।

मैंने GHUnit में OCMock को एकीकृत करने का प्रयास किया है , यह बहुत अच्छा है! आप github पर कोड प्राप्त कर सकते हैं ।


12

मुझे एहसास है कि यह एक पुराना सवाल है, लेकिन अगर आप xDnit-style test (Test :: Unit, JSUnit, JUnit, इत्यादि) पर BDD- शैली परीक्षण (rspec, जैस्मीन, आदि) पसंद करते हैं, तो आप Cedar की जाँच कर सकते हैं। । सीडर ऑब्जेक्टिव-सी के लिए बीडीडी-स्टाइल परीक्षण लाता है, अब यह भाषा बंद का समर्थन करती है।

हम अपनी iOS परियोजनाओं के लिए पाइस्टल लैब्स में देवदार का उपयोग खुशी से कर रहे हैं , और हम इसे बेहतर बनाने पर सक्रिय रूप से काम कर रहे हैं। किसी भी प्रतिक्रिया या सुझाव का cedar-discuss@googlegroups.com पर स्वागत है


10

मैं यह भी देखने के लिए कवरेज टूल्स का उपयोग करने की सिफारिश करूंगा कि कोड का कौन सा भाग यूनिट परीक्षणों के साथ कवर किया गया है और जो नहीं हैं। GCOV टूल के साथ बेसिक लाइन और ब्रांच कोड कवरेज जेनरेट किया जा सकता है । यदि आप अच्छी HTML कवरेज रिपोर्ट उत्पन्न करना चाहते हैं तो LCOV और ZCOV हैं जो बस करते हैं।





7

सेन: ते (परीक्षण ढांचे के निर्माता Xcode के साथ शामिल) बताते हैं कि iPhone परियोजना के साथ OCUnit का उपयोग कैसे करें: सरल- iphone-ipad-unit-test



5

मैं सुझाव दूंगा कि कीवी, iOS के लिए एक खुला स्रोत BDD परीक्षण ढाँचा: किवी

डैनियल स्टाइनबर्ग की पुस्तक "टेस्ट ड्राइविंग आईओएस डेवलपमेंट विथ कीवी" टेस्ट-ड्राइविंग-आईओएस-डेवलपमेंट शुरू करने या प्राप्त करने के लिए प्रोजेक्ट की विकी देखें।


कीवी भी OS X का समर्थन करता है, github.com/allending/Kiwi/wiki/Up-and-Running-with-Kiwi-for-Mac
dbainbridge

4

मैं iPhone और iPad काम के साथ SimpleUnitTest काम करता है का उपयोग करें।

http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html

यह एक इकाई परीक्षण Xcode टेम्पलेट के साथ आसानी से एक इकाई परीक्षण वर्ग जोड़ने के लिए आता है। रैप्स जी.टी.एम.

आप सचमुच इसे एक सक्रिय परियोजना में छोड़ सकते हैं और 3 मिनट (या उससे कम) के भीतर इकाई परीक्षण जोड़ना शुरू कर सकते हैं।


एर .. इसे चलाने के रूप में जल्द ही विफल माना जाता है?
क्वांटम्पोटेटो सेप

3

स्पेक्टा एक आधुनिक TDD (टेस्ट ड्रिवेन डेवलपमेंट) / BDD (बिहेवियर ड्रिवेन डेवलपमेंट) फ्रेमवर्क है जो XCTest के शीर्ष पर चलता है। यह आईओएस और मैक ओएस एक्स परियोजनाओं के लिए इकाई परीक्षण का समर्थन करता है।


0

मुझे उम्मीद है कि आप 'सेनटेस्टकिट' का उपयोग कर सकते हैं, जिसमें से आप प्रत्येक विधि का परीक्षण कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.