Quick/Nimble क्या है और इसकी ज़रूरत क्यों है?
Quick और Nimble Swift भाषा के लिए दो पूरक लाइब्रेरी हैं, जो Behavior-Driven Development (BDD) शैली में टेस्ट लिखने के लिए डिज़ाइन की गई हैं। BDD एक डेवलपमेंट पद्धति है जो उपयोगकर्ता के दृष्टिकोण से एप्लिकेशन के व्यवहार पर ध्यान केंद्रित करती है, न कि तकनीकी कार्यान्वयन विवरण पर। XCTAssertEqual(a, b) जैसे सूखे बयानों के बजाय, आप बताते हैं कि क्या होना चाहिए: "जब उपयोगकर्ता बटन दबाता है, तो ऐप को स्वागत संदेश दिखाना चाहिए।"
Quick एक फ्रेमवर्क है जो टेस्ट परिदृश्यों का वर्णन करने के लिए है। यह एक DSL (Domain-Specific Language) प्रदान करता है जो टेस्ट को पदानुक्रम में संरचित करने की अनुमति देता है: describe (संदर्भ का विवरण), context (शर्तों का स्पष्टीकरण) और it (विशिष्ट टेस्ट)। यह टेस्ट को पढ़ने योग्य और टीम के गैर-तकनीकी सदस्यों (मैनेजर, एनालिस्ट) के लिए भी समझने योग्य बनाता है।
Nimble मैचर्स (assertions) लिखने के लिए एक लाइब्रेरी है। मानक XCTAssert के बजाय, आप अभिव्यंजक निर्माणों का उपयोग करते हैं: expect(value).to(equal(expected)), expect(array).to(contain(element))। Nimble दर्जनों बिल्ट-इन मैचर्स प्रदान करता है और आपको आसानी से अपने स्वयं के मैचर्स बनाने की अनुमति देता है।
इसकी ज़रूरत क्यों है?
- पठनीयता: BDD पर टेस्ट एक स्पेसिफिकेशन की तरह दिखते हैं। आप उन्हें क्लाइंट को दिखा सकते हैं और सुनिश्चित कर सकते हैं कि आवश्यकताएं सही ढंग से समझी गई हैं।
- संरचना:
describe/context/itपदानुक्रम टेस्ट को तार्किक रूप से व्यवस्थित करने में मदद करता है, "स्पेगेटी-कोड" से बचाता है। - अभिव्यंजक मैचर्स: Nimble बयानों को अधिक स्पष्ट और जानकारीपूर्ण बनाता है। टेस्ट में त्रुटियां तुरंत समझ में आ जाती हैं।
- डीबगिंग में आसानी: जब टेस्ट फेल होता है, तो आप सिर्फ "5 की उम्मीद थी, 3 मिला" नहीं देखते, बल्कि पूरा संदर्भ देखते हैं: "जब उपयोगकर्ता गलत पासवर्ड दर्ज करता है, तो सिस्टम को त्रुटि दिखानी चाहिए।"
Quick/Nimble की स्थापना (Installation)
Quick और Nimble को CocoaPods या Swift Package Manager (SPM) के माध्यम से स्थापित किया जाता है। हम दोनों तरीकों पर विचार करेंगे।
CocoaPods के माध्यम से स्थापना
यदि आप अभी तक CocoaPods का उपयोग नहीं कर रहे हैं, तो इसे स्थापित करें:
sudo gem install cocoapods
अपने प्रोजेक्ट की रूट डायरेक्टरी में Podfile नामक फ़ाइल बनाएं और इसमें निम्नलिखित जोड़ें:
target 'YourAppName' do
# सामान्य निर्भरताएं (यदि कोई हों)
use_frameworks!
target 'YourAppNameTests' do
inherit! :search_paths
pod 'Quick'
pod 'Nimble'
end
end
फिर निष्पादित करें:
pod install
इसके बाद .xcworkspace फ़ाइल खोलें।
Swift Package Manager (SPM) के माध्यम से स्थापना
Xcode में: File → Add Packages... पर जाएं और रिपॉजिटरी का URL दर्ज करें:
https://github.com/Quick/Quick.git
https://github.com/Quick/Nimble.git
नवीनतम स्थिर संस्करण चुनें और पैकेज को अपने टेस्ट टार्गेट (YourAppNameTests) में जोड़ें।
त्वरित शुरुआत: पहला टेस्ट
चलिए एक सरल Calculator क्लास बनाते हैं और उसका परीक्षण करते हैं।
परीक्षण के लिए क्लास
// Calculator.swift
import Foundation
class Calculator {
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
func subtract(_ a: Int, _ b: Int) -> Int {
return a - b
}
func multiply(_ a: Int, _ b: Int) -> Int {
return a * b
}
}
Quick और Nimble का उपयोग करके टेस्ट
// CalculatorSpec.swift
import Quick
import Nimble
@testable import YourAppName // अपने ऐप के नाम से बदलें
class CalculatorSpec: QuickSpec {
override func spec() {
describe("Calculator") {
var calculator: Calculator!
beforeEach {
calculator = Calculator(