2012-12-14 14 views
11

मैंने यूनिट परीक्षण का कभी भी उपयोग नहीं किया है और मैं इसका उपयोग समझता हूं लेकिन मुझे वास्तव में पता नहीं है कि इसका उपयोग कब और कैसे किया जाए।एक्सकोड यूनिट परीक्षण

मैं जानना चाहता हूं कि यूनिट परीक्षण का उपयोग करने के लिए यह कितना मूल्यवान है, शायद कुछ उदाहरणों के साथ।

+2

"जब यह यूनिट परीक्षणों का प्रयोग कर यह लायक है" - कुछ लोगों का तर्क है कि वह हमेशा अपरिहार्य है; मैं कहूंगा कि यह केवल बड़ी परियोजनाओं ** और ** पुस्तकालयों के लिए आवश्यक है। –

+1

खोज [यहां] (http://stackoverflow.com/questions/33207/what-is-the-best-way-to-unit-test-objective-c-code)। इकाई परीक्षण विकल्पों और ट्यूटोरियल पर पूरी जानकारी। – rsswtmr

+1

एक अच्छा उपयोग तब होता है जब आपके पास ऐसा ऐप होता है जो किसी सर्वर से यूआरएल कनेक्शन बनाता है। ऐप चलाने के बिना उन्हें परीक्षण करने के लिए आप इकाई परीक्षण में अलग से सेट कर सकते हैं। –

उत्तर

9

आपको लगभग हमेशा इकाई परीक्षण करना चाहिए और आपको यूनिट परीक्षणों के साथ कोड लिखना चाहिए। चरमपंथी कोड लिखने से पहले भी परीक्षण लिखते हैं (इसे टीडीडी कहा जाता है - टेस्ट संचालित विकास)।

मैं आपको एक वास्तविक जीवन उदाहरण दूंगा: मुझे हाल ही में एक क्रमबद्ध एनएसएआरएआरई कोड करना था जो "अंतराल" का समर्थन करता है। मतलब, सरणी को अंतराल डालने और इसे क्रमबद्ध रखने के बारे में पता होना चाहिए।

उदाहरण के लिए, सरणी इस तरह दिखेगी: [1-3, 5-9, 12-50]। इस उदाहरण में सरणी में 3 अंतराल हैं, और जैसा कि आप देख सकते हैं कि वे क्रमबद्ध हैं। मैंने अपनी कक्षा (मैंने इसे इंटरवलसएरे कहा जाता है) लिखने के बाद, एचएडी यह सुनिश्चित करने के लिए परीक्षण लिखने के लिए कि यह सही तरीके से काम करता है और यदि मैं या कोई अन्य भविष्य में कोड में परिवर्तन करता हूं तो मैं इसे "तोड़ नहीं दूंगा"।

यहां कुछ उदाहरण परीक्षण कर रहे हैं (छद्म कोड):

टेस्ट 1:

- Create a new IntervalsArray 
- Insert a new interval to the array 
- (TEST) make sure the array has 1 object in it 

टेस्ट 2:

- Create a new IntervalsArray 
- Insert 2 intervals into the array: [1-3] and [5-9] 
- (TEST) make sure there are 2 items in the array 
- (TEST) make sure interval [1-3] comes before interval [5-9] 

अंत मैं कवर करने के लिए 15 परीक्षण की तरह कुछ था पर मेरी नई सरणी के हर पहलू।

यहां एक good unit-testing with Xcode tutorial है।

आप अपने यूआई का परीक्षण करने के लिए तर्क परीक्षण (जो इकाई परीक्षण से अधिक जटिल हैं) भी लिख सकते हैं। UIAutomation के बारे में थोड़ा पढ़ें, जो ऐप्पल का परीक्षण यूआई का तरीका है। यह सही नहीं है, लेकिन यह बहुत अच्छा है। इस बारे में Here's an excellent tutorial

यदि आप स्वयं को एक अच्छा प्रोग्रामर मानते हैं, तो आपको अपने कोड के लिए यूनिट-टेस्ट लिखना चाहिए।

+2

"आपको हमेशा यूनिट टेस्ट चाहिए" - हैलो वर्ल्ड के लिए भी, है ना? (नहीं, वास्तव में नहीं। चलो उचित रहें, ठीक है?) –

+0

ठीक है, मेरा जवाब संपादित किया। –

+0

@ एलीगानेम धन्यवाद। –

1

जब भी आपके लेखन में एक कक्षा है जिसमें कक्षाएं हैं, जो आपकी नहीं हैं। उन वर्गों का परीक्षण करने के लिए यूनिट परीक्षण जोड़ने का यह एक अच्छा समय है।

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

यदि आप ऐसे पुस्तकालय बना रहे हैं जो अन्य प्रोग्रामर उपयोग करेंगे, या आप कई परियोजनाओं में उपयोग करेंगे, तो उन्हें हमेशा यूनिट परीक्षण होना चाहिए।

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

3

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

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

कॉलिंग टीडीडी "चरमपंथी" यह तर्कहीन और अव्यवहारिक ध्वनि बनाता है। वास्तव में, एक बार जब आप टीडीडी सीखते हैं, तो यह समय/पैसा बचाता है।

टीडीडी कैसे काम करता है इसके उदाहरण के लिए Unit Testing Example with OCUnit देखें।

13

अन्य उत्तरों बताते हैं कि लेकिन वास्तव में कैसे, तो मुझे एक उत्तर भी जोड़ने दें।

जब

किसी भी समय आप उत्पादन कोड है कि आप रखने के लिए जा रहे हैं लिख रहे हैं, तो आप यूनिट टेस्टिंग इसके लिए होना चाहिए।

पहले पाँच मिनट

या तो कर रहे हैं: सबसे उपयोगी प्रशिक्षण है कि मैं इस पर देखा निम्नलिखित 2-भाग वीडियो श्रृंखला थी सिर्फ परिचय ताकि आप इसके अंत तक जा सकें।

कैसे

मैं स्विफ्ट के साथ एक्सकोड 7 का उपयोग कर रहा हूं।

एक नई परियोजना शुरू करें और एक यूनिट टेस्ट जोड़ें।

मैं अपना MyProject पर कॉल कर रहा हूं। यदि आप प्रोजेक्ट नेविगेटर में MyProjectTests समूह खोलते हैं, तो आप देखेंगे कि एक्सकोड ने आपके लिए पहले से ही एक यूनिट टेस्ट फ़ाइल बनाई है जिसे MyProjectTest.swift कहा जाता है।

enter image description here

अब आप बिल्कुल उदाहरण तरीकों हटा सकते हैं और अपने स्वयं के वर्ग विधि का परीक्षण करने के लिए एक नया func जोड़ सकते हैं। शीर्ष पर लाइन @testable import MyProject जोड़ने के लिए सुनिश्चित करें। यदि आपके प्रोजेक्ट नाम में रिक्त स्थान हैं तो स्पेस को अंडरस्कोर से प्रतिस्थापित करें। (उदाहरण के लिए, "माई उदाहरण प्रोजेक्ट" @testable import My_Example_Project का उपयोग करेगा।)

मैं testMethodNameBeingTested_Senario_ExpectedBehavior के नामकरण पैटर्न का पालन कर रहा हूं। यूनिट टेस्ट नाम "परीक्षण" से शुरू होना चाहिए।

मैं इस तरह कुछ करना होगा:

import XCTest 
@testable import MyProject 

class MyProjectTests: XCTestCase { 

    func testSum_TwoNumbers_ReturnsSum() { 
     // Arrange (set up the needed objects) 
     let myClass = MyClass() 

     // Act (run the method you want to test) 
     let sum = myClass.sum(1, 2) 

     // Assert (test that the behavior is as expected) 
     XCTAssertEqual(sum, 3) 

    } 
} 
बेशक

, निर्माण में विफल रहता है क्योंकि हम अब तक नहीं जोड़ा MyClass वर्ग।

अपनी कक्षा जोड़ें।

मैं MyProject पर एक स्विफ्ट फ़ाइल जोड़ रहा हूं जिसे MyClass कहा जाता है।

class MyClass { 

    func sum(a: Int, _ b: Int) -> Int { 
     return a + b 
    } 
} 

यदि मैं वास्तव में टीडीडी सिद्धांतों का पालन कर रहा था तो मैं केवल फ़ंक्शन नाम जोड़ूंगा, सही मान वापस नहीं लौटाऊंगा। लेकिन अल्पसंख्यक के लिए मैं अभी पूरी विधि पर जाऊंगा।

टेस्ट यूनिट कक्षा या परीक्षण को फिर से चलाने के लिए विधि के आगे परीक्षण बटन दबाएं और इसे पास करना चाहिए।

इसे असफल (यूनिट परीक्षण का एक महत्वपूर्ण हिस्सा) देखने के लिए आप MyClass की विधि return 0 पर कुछ कर सकते हैं।

enter image description here

आप वापस जाएँ और इसे ठीक करने के लिए और फिर अधिक यूनिट टेस्ट जोड़ सकते हैं: तो फिर तुम निम्नलिखित जब आप परीक्षण चलाने देखना होगा। यदि आप चाहें तो आप विभिन्न कक्षाओं के लिए अन्य यूनिट टेस्ट फाइल भी बना सकते हैं। प्रोजेक्ट नेविगेटर में बस MyProjectTest समूह पर राइट क्लिक करें और "नई फ़ाइल" चुनें, फिर टेस्ट केस क्लास चुनें।

enter image description here

संबंधित

Xcode UI Test example

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