खोज…


Xcode प्रोजेक्ट में टेस्ट फाइल्स जोड़ना

प्रोजेक्ट बनाते समय

आपको प्रोजेक्ट निर्माण संवाद में "यूनिट टेस्ट शामिल करें" की जांच करनी चाहिए।

यहाँ छवि विवरण दर्ज करें

प्रोजेक्ट बनाने के बाद

यदि आप अपना प्रोजेक्ट बनाते समय उस आइटम की जाँच करने से चूक गए हैं, तो आप हमेशा बाद में परीक्षण फ़ाइलें जोड़ सकते हैं। ऐसा करने के लिए:

1- Xcode में अपने प्रोजेक्ट सेटिंग्स में जाएं

2- "लक्ष्य" पर जाएं

3- "लक्ष्य जोड़ें" पर क्लिक करें

4- "अन्य" के तहत, "कोको टच यूनिट टेस्ट टेस्टिंग बंडल" चुनें

अंत में, आपके पास एक फ़ाइल होनी चाहिए जिसका नाम [Your app name]Tests.swift । ऑब्जेक्टिव-सी में, आपके पास दो फाइलें होनी चाहिए, जिनका नाम [Your app name]Tests.h और [Your app name]Tests.m

[Your app name]Tests.swift or .m फ़ाइल डिफ़ॉल्ट रूप से शामिल होगी:

  • एक XCTest मॉड्यूल आयात
  • एक [Your app name]Tests क्लास जो XCTestCase विस्तार XCTestCase
  • setUp , tearDown , testExample , testPerformanceExample तरीकों

तीव्र

import XCTest

class MyProjectTests: XCTestCase {

override func setUp() {
    super.setUp()
    // Put setup code here. This method is called before the invocation of each test method in the class.
}

override func tearDown() {
    // Put teardown code here. This method is called after the invocation of each test method in the class.
    super.tearDown()
}

func testExample() {
    // This is an example of a functional test case.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
    
}

func testPerformanceExample() {
    // This is an example of a performance test case.
    self.measure {
        // Put the code you want to measure the time of here.
    }
}

}

उद्देश्य सी

#import <XCTest/XCTest.h>

@interface MyProjectTests : XCTestCase

@end

@implementation MyProjectTests

- (void)setUp {
    [super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}

- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
    [super tearDown];
}

- (void)testExample {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}

- (void)testPerformanceExample {
// This is an example of a performance test case.
    [self measureBlock:^{
    // Put the code you want to measure the time of here.
    }];
}

@end

स्टोरीबोर्ड और व्यू कंट्रोलर को परीक्षण फ़ाइल के उदाहरण के रूप में जोड़ना

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

नियंत्रक देखें

तीव्र

var viewController : ViewController!

स्टोरीबोर्ड का परिचय और देखें नियंत्रक को प्रारंभ करना

इस कोड को setUp() विधि में जोड़ें:

तीव्र

let storyboard = UIStoryboard(name: "Main", bundle: nil)
viewController = storyboard.instantiateInitialViewController() as! ViewController

उद्देश्य सी

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:"Main" bundle:nil];
viewController = (ViewController *) [storyboard instantiateInitialViewController];

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

परीक्षण विधियों को जोड़ना

Apple के अनुसार:

परीक्षण विधियाँ

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

तो हम विधि के उपसर्ग के रूप में "परीक्षण" का उपयोग करके एक परीक्षण विधि जोड़ते हैं, जैसे:

तीव्र

func testSomething() {

}

उद्देश्य सी

- (void)testSomething {

}

वास्तव में परिणामों का परीक्षण करने के लिए, हम XCTAssert() पद्धति का उपयोग करते हैं, जो एक बूलियन अभिव्यक्ति लेता है, और यदि सही है, तो परीक्षण को सफल के रूप में चिह्नित करता है, अन्यथा यह इसे विफल के रूप में चिह्नित करेगा।

मान लीजिए कि हमारे पास व्यू कंट्रोलर क्लास में एक विधि है, जिसे sum() कहा जाता है, जो दो संख्याओं के योग की गणना करता है। इसका परीक्षण करने के लिए, हम इस विधि का उपयोग करते हैं:

तीव्र

func testSum(){
    let result = viewController.sum(4, and: 5)
    XCTAssertEqual(result, 9)
}

उद्देश्य सी

- (void)testSum {
    int result = [viewController sum:4 and:5];
    XCTAssertEqual(result, 9);
}

ध्यान दें

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

XCTAssertNotNil(viewController.view)

परीक्षण शुरू करें

एक विशिष्ट विधि का परीक्षण

किसी विशिष्ट विधि का परीक्षण करने के लिए, विधि परिभाषा के बगल में स्थित वर्ग पर क्लिक करें।

सभी तरीकों का परीक्षण

सभी विधियों का परीक्षण करने के लिए, वर्ग परिभाषा के बगल में स्थित वर्ग पर क्लिक करें।

परीक्षण परिणाम देखें

यदि परिभाषा के आगे एक हरे रंग की जांच है, तो परीक्षण सफल रहा है।

यहाँ छवि विवरण दर्ज करें

यदि परिभाषा के बगल में एक लाल क्रॉस है, तो परीक्षण विफल हो गया है।

यहाँ छवि विवरण दर्ज करें

सभी परीक्षण चल रहे हैं

Product -> Test OR Cmd + U

यह सभी परीक्षण लक्ष्य से सभी परीक्षण चलाएगा!

एक मॉड्यूल आयात करें जिसे यह परीक्षण किया जा सकता है

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

मान लीजिए कि हमारे पास ToDo नामक एक मुख्य मॉड्यूल है और हम इसके लिए परीक्षण लिखना चाहते हैं। हम उस मॉड्यूल को इस तरह आयात करेंगे:

@testable import ToDo

इस इम्पोर्ट स्टेटमेंट के साथ फाइल में सभी टेस्ट मेथड्स अब सभी internal कक्षाओं, स्ट्रक्चर्स, एनमोंस और ToDo मॉड्यूल के सभी internal तरीकों तक पहुंच सकते हैं।

आपको उन तत्वों के साथ फ़ाइलों को कभी नहीं जोड़ना चाहिए जिन्हें आप परीक्षण लक्ष्य पर परीक्षण करना चाहते हैं क्योंकि इससे हार्ड डिबग की समस्या हो सकती है।

ट्रिगर देखने लोडिंग और उपस्थिति

लोडिंग देखें

एक दृश्य नियंत्रक के लिए एक परीक्षण में आप कभी-कभी loadView() या viewDidLoad() के निष्पादन को ट्रिगर करना चाहते हैं। यह दृश्य तक पहुंचकर किया जा सकता है। मान लें कि आपके पास sut नामक प्रणाली में परीक्षण नियंत्रक है (सिस्टम अंडर टेस्ट), तो कोड इस तरह दिखेगा:

XCTAssertNotNil(sut.view)

रूप दिखना

आप नीचे दिए गए कोड को जोड़कर तरीकों को भी देख सकते हैं viewWillAppear(_:) और viewDidAppear(_:) :

sut.beginAppearanceTransition(true, animated: true)
sut.endAppearanceTransition()

टेस्ट क्लास लिखना

import XCTest
@testable import PersonApp

class PersonTests: XCTestCase {
    func test_completeName() {
        let person = Person(firstName: "Josh", lastName: "Brown")
        XCTAssertEqual(person.completeName(), "Josh Brown")
    }
}

अब चर्चा करते हैं कि यहाँ क्या हो रहा है। import XCTest लाइन हमें XCTestCase का विस्तार XCTestCase और XCTAssertEqual (अन्य दावे के बीच) का उपयोग करने की अनुमति देगा। विस्तार XCTestCase और के साथ हमारे परीक्षण नाम लगाकर test सुनिश्चित करेगा जब परियोजना (⌘U या उत्पाद> टेस्ट) में परीक्षण चल रहा है कि Xcode स्वचालित रूप से इस परीक्षा में चलाता है। @testable import PersonApp लाइन हमारे PersonApp टार्गेट को इम्पोर्ट PersonApp इसलिए हम इसमें से क्लास जैसे टेस्ट और इस्तेमाल कर सकते हैं, जैसे ऊपर दिए गए उदाहरण में Person । और अंत में, हमारा XCTAssertEqual यह सुनिश्चित करेगा कि person.completeName() स्ट्रिंग "Josh Brown" बराबर है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow