Swift (iOS/macOS) में परीक्षण: फ्रेमवर्क और उपकरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift (iOS/macOS) में परीक्षण: फ्रेमवर्क और उपकरणों का अवलोकन

\n\n

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

\n\n

1. XCTest — Apple का मानक फ्रेमवर्क

\n\n

XCTest Xcode में निर्मित है और यूनिट- और UI-टेस्ट लिखने का प्राथमिक उपकरण है। यह एसिंक्रोनस परीक्षण, प्रदर्शन और CI/CD के साथ एकीकरण का समर्थन करता है।

\n\n

यूनिट-टेस्ट का उदाहरण:

\n
import XCTest\n@testable import MyApp\n\nfinal class CalculatorTests: XCTestCase {\n    var calculator: Calculator!\n\n    override func setUp() {\n        super.setUp()\n        calculator = Calculator()\n    }\n\n    func testAddition() {\n        let result = calculator.add(2, 3)\n        XCTAssertEqual(result, 5, "जोड़ सही होना चाहिए")\n    }\n\n    func testAsyncOperation() {\n        let expectation = XCTestExpectation(description: "एसिंक्रोनस संचालन")\n        calculator.fetchRemoteValue { value in\n            XCTAssertGreaterThan(value, 0)\n            expectation.fulfill()\n        }\n        wait(for: [expectation], timeout: 5.0)\n    }\n}
\n\n

XCTest की प्रमुख क्षमताएं:

\n
    \n
  • असर्ट: XCTAssertEqual, XCTAssertNil, XCTAssertThrowsError
  • \n
  • measure के माध्यम से प्रदर्शन मापन
  • \n
  • XCUIApplication और XCUIElement के साथ UI परीक्षण
  • \n
  • समानांतर परीक्षण चलाने का समर्थन
  • \n
\n\n

2. Quick + Nimble — BDD दृष्टिकोण

\n\n

Quick एक BDD-फ्रेमवर्क है जो "Given-When-Then" शैली में परीक्षण लिखने की अनुमति देता है। Nimble इसका साथी है, जो अभिव्यंजक मैचर्स प्रदान करता है।

\n\n

Quick/Nimble के साथ उदाहरण:

\n
import Quick\nimport Nimble\n\nclass UserSpec: QuickSpec {\n    override func spec() {\n        describe("User मॉडल") {\n            var user: User!\n\n            beforeEach {\n                user = User(name: "Alice", age: 30)\n            }\n\n            context("जब आयु मान्य है") {\n                it("वयस्क होना चाहिए") {\n                    expect(user.isAdult).to(beTrue())\n                }\n            }\n\n            context("जब नाम अपडेट कर रहे हैं") {\n                it("नाम सही ढंग से बदलता है") {\n                    user.updateName("Bob")\n                    expect(user.name) == "Bob"\n                }\n            }\n        }\n    }\n}
\n\n

लाभ:

\n
    \n
  • पढ़ने योग्य परीक्षण, गैर-प्रोग्रामर के लिए समझने योग्य
  • \n
  • लचीले मैचर्स: beCloseTo(), contain(), throwError()
  • \n
  • toEventually() के माध्यम से एसिंक्रोनसिटी का समर्थन
  • \n
\n\n

3. XCUITest — UI परीक्षण

\n\n

यूज़र इंटरफ़ेस के परीक्षण के लिए XCUITest का उपयोग किया जाता है। यह उपयोगकर्ता क्रियाओं का अनुकरण करता है: टैप, स्वाइप, टेक्स्ट इनपुट।

\n\n

iOS के लिए UI-टेस्ट का उदाहरण:

\n
import XCTest\n\nclass LoginUITests: XCTestCase {\n    let app = XCUIApplication()\n\n    override func setUp() {\n        continueAfterFailure = false\n        app.launch()\n    }\n\n    func testSuccessfulLogin() {\n        let usernameField = app.textFields["username"]\n        usernameField.tap()\n        usernameField.typeText("testuser")\n\n        let passwordField = app.secureTextFields["password"]\n        passwordField.tap()\n        passwordField.typeText("password123")\n\n        app.buttons["Login"].tap()\n        XCTAssertTrue(app.staticTexts["Welcome"].exists)\n    }\n}
\n\n

अनुशंसाएँ