Docker के साथ Swift एकीकरण परीक्षण: A से Z तक

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

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

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

परिचय: क्यों Docker और Swift एकीकरण परीक्षण के लिए आदर्श जोड़ी हैं?

\n\n

iOS और macOS के तहत आधुनिक विकास के लिए न केवल यूनिट परीक्षण बल्कि पूर्ण एकीकरण परीक्षण की भी आवश्यकता होती है। जब आपका एप्लिकेशन डेटाबेस, बाहरी API या फ़ाइल सिस्टम के साथ इंटरैक्ट करता है, तो प्रत्येक घटक का पृथक परीक्षण पर्याप्त नहीं रह जाता। यहीं पर Docker मदद करता है।

\n\n

Docker परीक्षणों के लिए समान वातावरण बनाने की अनुमति देता है, जिससे "मेरी मशीन पर काम करता है" समस्या समाप्त हो जाती है। Swift डेवलपर्स के लिए यह विशेष रूप से प्रासंगिक है: कंटेनरीकरण सर्वर-साइड Swift अनुप्रयोगों (Vapor, Kitura) का परीक्षण करने के साथ-साथ iOS अनुप्रयोगों (डेटाबेस, कैश, संदेश कतारें) के लिए बुनियादी ढाँचे का अनुकरण करने का अवसर देता है।

\n\n

इस लेख में, हम Docker के साथ Swift एकीकरण परीक्षण सेट करने के पूर्ण चक्र पर चर्चा करेंगे: परीक्षण वातावरण बनाने से लेकर CI/CD में चलाने तक।

\n\n

1. वातावरण तैयार करना: Docker और Swift

\n\n

1.1. Docker और Swift Toolchain स्थापित करना

\n\n

सबसे पहले सुनिश्चित करें कि आपके पास निम्नलिखित स्थापित हैं:

\n
    \n
  • Docker Desktop (macOS के लिए) या Docker Engine (Linux के लिए)
  • \n
  • Swift Toolchain संस्करण 5.7+ (swift.org से डाउनलोड किया जा सकता है)
  • \n
  • Xcode 14+ (यदि iOS घटकों का परीक्षण कर रहे हैं)
  • \n
\n\n

1.2. Swift के लिए Dockerfile बनाना

\n\n

हम अपने Swift एप्लिकेशन के लिए एक बुनियादी Docker इमेज बनाकर शुरू करते हैं। अपने प्रोजेक्ट की रूट में Dockerfile फ़ाइल बनाएँ:

\n\n
# Dockerfile\nFROM swift:5.9-focal AS base\n\n# कार्यशील निर्देशिका सेट करें\nWORKDIR /app\n\n# मेनिफेस्ट फ़ाइल Package.swift कॉपी करें\nCOPY Package.swift ./\nCOPY Sources/ ./Sources/\nCOPY Tests/ ./Tests/\n\n# प्रोजेक्ट बिल्ड करें\nRUN swift build -c debug\n\n# परीक्षणों के लिए अंतिम इमेज\nFROM base AS test\nCMD ["swift", "test", "--parallel"]\n
\n\n

यह इमेज प्रोजेक्ट को बिल्ड करती है और परीक्षण चलाती है। एकीकरण परीक्षणों के लिए हमें अतिरिक्त सेवाओं की आवश्यकता होगी।

\n\n

2. Docker Compose के साथ एकीकरण परीक्षण

\n\n

Docker Compose एक साथ कई कंटेनर चलाने की अनुमति देता है। एक सामान्य परिदृश्य के लिए हमें आवश्यकता होगी:

\n
    \n
  • हमारे Swift एप्लिकेशन के साथ एक कंटेनर
  • \n
  • PostgreSQL (या अन्य DB) के साथ एक कंटेनर
  • \n
  • Redis (कैशिंग के लिए) के साथ एक कंटेनर
  • \n
\n\n

2.1. docker-compose.yml का उदाहरण

\n\n
# docker-compose.yml\nversion: '3.8'\n\nservices:\n  postgres:\n    image: postgres:15\n    environment:\n      POSTGRES_USER: test_user\n      POSTGRES_PASSWORD: test_pass\n      POSTGRES_DB: test_db\n    ports:\n      - "5432:5432"\n    healthcheck:\n      test: ["CMD-SHELL", "pg_isready -U test_user -d test_db"]\n      interval: 5s\n      timeout: 5s\n      retries: 5\n\n  redis:\n    image: redis:7-alpine\n    ports:\n      - "6379:6379"\n\n  swift-tests:\n    build:\n      context: .\n      dockerfile: Dockerfile.test\n    depends_on:\n      postgres:\n        condition: service_healthy\n      redis:\n        condition: service_started\n    environment:\n      DATABASE_URL: "postgres://test_user:test_pass@postgres:5432/test_db"\n      REDIS_URL: "redis://redis:6379"\n    volumes:\n      - .:/app\n
\n\n

2.2. परीक्षणों के लिए विशेष Dockerfile

\n\n

हम Dockerfile.test बनाएँगे जो निर्भरताओं के तैयार होने की प्रतीक्षा करेगा:

\n\n
# Dockerfile.test\nFROM swift:5.9-focal\n\nWORKDIR /app\n\n# कनेक्शन जाँच के लिए netcat स्थापित करें\nRUN apt-get update && apt-get install -y netcat-openbsd && rm -rf /var/lib/apt/lists/*\n\nCOPY Package.swift ./\nRUN swift package resolve\n\nCOPY . .\n\n# PostgreSQL और Redis की प्रतीक्षा करें\nCOPY wait-for-services.sh /usr/local/bin/\nRUN chmod +x /usr/local/bin/wait-for-services.sh\n\nCMD ["wait-for-services.sh"]\n
\n\n

स्क्रिप्ट wait-for-services.sh:

\n\n
#!/bin/bash\n# wait-for-services.sh\n\necho "PostgreSQL की प्रतीक्षा की जा रही है..."\nwhile ! nc -z postgres                

ब्लॉग

पुस्तक अनुशंसाएँ