2015-07-24 15 views
15

मैंने हाल ही में Unit Testing in Xcode के बारे में सीखा है। अब मैं एक्सकोड 7 की कोशिश कर रहा हूं और मुझे लगता है कि जब मैं एक नई परियोजना बनाता हूं तो यूआई टेस्ट के लिए एक नया समूह होता है।एक्सकोड यूआई टेस्ट उदाहरण

enter image description here

मैं WWDC 2015 video देखा और यह बहुत अच्छा था, लेकिन आप एक सुपर सरल उदाहरण है कि मैं अपने आप को के माध्यम से जा सकते हैं क्या है? वीडियो उदाहरण मेरे लिए थोड़ा जटिल थे।

नोट्स

  • नीचे इस सवाल का जवाब यह पता लगाने की मेरी प्रयास है, लेकिन मैं किसी भी बेहतर जवाब स्वागत करते हैं।
  • मैं इन अतः Xcode में यूआई परीक्षण के बारे में सवाल पढ़ा है लेकिन वे अलग हैं: docs, reloading, App vs UI, ViewController, multiple, values and properties, pre XCode 7 projects

उत्तर

44

उपयोग यूनिट टेस्ट अपनी कक्षाओं में तरीकों की वैधता का परीक्षण करने के लिए। आप उनके द्वारा लिखे गए कोड का परीक्षण करने के लिए उनका उपयोग करते हैं। (Xcode में एक साधारण यूनिट टेस्ट की स्थापना के लिए my other example देखें।)

उपयोग यूआई टेस्ट उपयोगकर्ता इंटरफ़ेस की वैधता की जांच करने के लिए। इसके बारे में सोचें कि अपने स्वयं के रोबोट को पार करने और अपने ऐप के साथ सभी सामान्य इंटरैक्शन करने के बारे में सोचें जो एक सामान्य उपयोगकर्ता होगा। यह आपको स्वयं करने का समय बचाता है।

इस लेखन के समय, यूआई घटकों के कई गुणों तक पहुंचना मुश्किल है, लेकिन केवल उन्हें टैप करके परीक्षण करना और उन्हें स्वाइप करना यह पुष्टि करता है कि वे वहां हैं।

उदाहरण

यह सबसे सरल सेटअप और यूआई परीक्षण है कि मैं के बारे में सोच सकता है के बारे में है: एक बटन है कि जब दबाया एक लेबल के पाठ बदल जाता है।

सेट करें

  • iOS के लिए Xcode में कोई नया प्रोजेक्ट बनाएं 7+ 9.0+। सुनिश्चित करें कि यूआई परीक्षण शामिल
  • मेक

enter image description here

  • आप Xcode 7 से पहले बनाए गए एक परियोजना के लिए यूआई परीक्षण जोड़ रहे हैं चेक किया गया है, this answer देखते हैं।(फ़ाइल> नया> लक्ष्य> टेस्ट> कोको टच यूआई परीक्षण बंडल)

  • जोड़ें UILabel और स्टोरीबोर्ड

enter image description here

  • एक @IBOutlet और बनाने के लिए एक UIButton @ViewController में IBAction और button दबाए जाने पर label टेक्स्ट परिवर्तन करें।

    import UIKit 
    class ViewController: UIViewController { 
        @IBOutlet weak var label: UILabel! 
        @IBAction func button(sender: AnyObject) { 
         label.text = "Hello" 
        } 
    } 
    

परीक्षण

  • ओपन YourProject UITests फ़ाइल मत करो।

enter image description here

  • testExample() विधि में अपने curser रखो। , एप्लिकेशन में

enter image description here

  • (आप टिप्पणी को हटा सकते हैं)

enter image description here

  • प्रेस लाल रिकॉर्ड बटन, (1) लेबल नल (2) बटन टैप करें, और उसके बाद (3) लेबल को फिर से टैप करें। (4) रिकॉर्डिंग को रोकने के लिए फिर से रिकॉर्ड बटन दबाएं। निम्नलिखित कोड स्वतः ही आपके सामने किया जाना चाहिए था:

    func testExample() { 
    
        let app = XCUIApplication() 
        app.staticTexts["Label"].tap() 
        app.buttons["Button"].tap() 
        app.staticTexts["Hello"].tap() 
    } 
    
  • एक XCTAssert बनाने के लिए एक प्रारंभिक बिंदु के रूप में प्रयोग करें staticText लाइनों। अब आप होना चाहिए:

    func testExample() { 
    
        let app = XCUIApplication() 
        XCTAssert(app.staticTexts["Label"].exists) 
        app.buttons["Button"].tap() 
        XCTAssert(app.staticTexts["Hello"].exists) 
    } 
    
  • प्रेस यूआई टेस्ट चलाने के लिए बाईं तरफ के हीरे। जब यह गुजरता है तो इसे हरा बदलना चाहिए।

enter image description here

  • यह है कि! इससे पता चला कि UIButton और UILabel मौजूद हैं और लेबल का टेक्स्ट बदल गया है। यदि आप इसे असफल देखना चाहते हैं (एक अच्छा विचार), तो आप कुछ और करने के लिए "हैलो" बदल सकते हैं।

इसके अलावा उत्तर के लिए अध्ययन

+0

यह सुनिश्चित करना संभव है कि यह लेबल बदल गया? यदि यह एक बटन है जो "हैलो" में बदल जाता है तो परीक्षा भी पास हो जाएगी। एक विकल्प यह जांचना होगा कि लेबल और बटन मौजूद है, लेकिन यह सामान्य नहीं है। क्या होगा यदि हम लेबल को "हैलो" के बजाय खाली स्ट्रिंग में बदलना चाहते हैं? 'app.staticTexts [" "] मौजूद है 'लगभग हमेशा सच है। – Kalicz

+0

हम "हैलो" जैसे हार्डकोड किए गए टेक्स्ट की बजाय तत्वों की पहचान करने के लिए एक्सेसिफ़ायर के लिए क्यों नहीं जा सकते हैं। यह हमेशा मदद करता है, भले ही पाठ भविष्य में बदल गया हो। – Sravan

+0

मुझे यकीन है कि शायद बेहतर होगा। उपरोक्त उत्तर कुछ ऐसा था जो मैंने किया था क्योंकि मैं किसी भी अन्य सरल उदाहरणों की अनुपस्थिति में यूआई परीक्षण को समझने की कोशिश कर रहा था। इस प्रश्न का एक और जवाब जोड़ने के लिए स्वतंत्र महसूस करें जो मेरे उत्तर में सुधार करता है। – Suragch

9

@Suragch +1। एक बात मैंने देखी और यूआई टेस्ट केस के अंदर हर समारोह को साझा करना चाहते हैं, "परीक्षण" से शुरू होना चाहिए। इसके बाद आप अतिरिक्त नाम जोड़ सकते हैं। केवल इस तरह बटन (परीक्षण शुरू करने के लिए क्लिक करने के लिए) प्रकट होता है।

+0

आप संपादन या टिप्पणी के लिए सुझाव दे सकते हैं। एक अलग जवाब समझ में आता है। –

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