Kotlin के साथ Docker का एकीकरण परीक्षण: उन्नत स्तर

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

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

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

Kotlin के साथ Docker का एकीकरण परीक्षण: उन्नत स्तर

\n\n

एकीकरण परीक्षण Kotlin पर आधुनिक माइक्रोसर्विसेज के विकास में एक महत्वपूर्ण चरण है। Docker का उपयोग पृथक, पुनरुत्पादनीय वातावरण बनाने की अनुमति देता है जो production के जितना संभव हो उतना करीब होते हैं। इस लेख में, हम Docker के साथ Kotlin अनुप्रयोगों के एकीकरण परीक्षण की उन्नत तकनीकों पर चर्चा करेंगे, जिसमें Testcontainers, प्रदर्शन अनुकूलन और CI/CD एकीकरण शामिल हैं।

\n\n

1. Kotlin प्रोजेक्ट के लिए Testcontainers सेटअप

\n\n

Testcontainers JUnit के लिए एक लाइब्रेरी है जो सीधे परीक्षणों से Docker कंटेनरों के जीवनचक्र का प्रबंधन करती है। Kotlin के लिए, यह सुविधाजनक DSL एक्सटेंशन प्रदान करती है।

\n\n

1.1. निर्भरताएँ जोड़ना

\n\n

build.gradle.kts में निम्नलिखित निर्भरताएँ जोड़ें:

\n\n
testImplementation("org.testcontainers:testcontainers:1.19.3")\ntestImplementation("org.testcontainers:postgresql:1.19.3")\ntestImplementation("org.testcontainers:junit-jupiter:1.19.3")\ntestImplementation("org.jetbrains.kotlin:kotlin-test")
\n\n

1.2. PostgreSQL के साथ मूल उदाहरण

\n\n

PostgreSQL के साथ काम करने वाले रिपॉजिटरी के लिए एक परीक्षण पर विचार करें:

\n\n
import org.junit.jupiter.api.Test\nimport org.testcontainers.containers.PostgreSQLContainer\nimport org.testcontainers.junit.jupiter.Container\nimport org.testcontainers.junit.jupiter.Testcontainers\n\n@Testcontainers\nclass UserRepositoryTest {\n\n    companion object {\n        @Container\n        val postgres = PostgreSQLContainer<Nothing>("postgres:15-alpine").apply {\n            withDatabaseName("testdb")\n            withUsername("test")\n            withPassword("test")\n        }\n    }\n\n    @Test\n    fun `should save and retrieve user`() {\n        val dataSource = createDataSource(postgres.jdbcUrl, postgres.username, postgres.password)\n        val repository = UserRepository(dataSource)\n\n        val user = User(id = null, name = "Alice", email = "alice@example.com")\n        val saved = repository.save(user)\n\n        val found = repository.findById(saved.id!!)\n        assert(found?.name == "Alice")\n    }\n\n    private fun createDataSource(jdbcUrl: String, username: String, password: String): DataSource {\n        // HikariCP या अन्य कनेक्शन पूल\n        return HikariDataSource(HikariConfig().apply {\n            this.jdbcUrl = jdbcUrl\n            this.username = username\n            this.password = password\n            driverClassName = "org.postgresql.Driver"\n        })\n    }\n}
\n\n

Testcontainers स्वचालित रूप से परीक्षणों से पहले कंटेनर शुरू करता है और पूरा होने के बाद रोक देता है। यह परीक्षण वातावरण की शुद्धता सुनिश्चित करता है।

\n\n

2. Docker Compose के साथ कई सेवाओं का परीक्षण

\n\n

वास्तविक माइक्रोसर्विसेज में, अक्सर कई बाहरी प्रणालियों के साथ बातचीत की आवश्यकता होती है: डेटाबेस, संदेश कतारें, कैश। पूर्ण स्टैक को ऊपर उठाने के लिए DockerComposeContainer का उपयोग करें।

\n\n

2.1. Docker Compose कॉन्फ़िगरेशन

\n\n

एक docker-compose-test.yml फ़ाइल बनाएँ:

\n\n
version: '3.8'\nservices:\n  postgres:\n    image: postgres:15-alpine\n    environment:\n      POSTGRES_DB: testdb\n      POSTGRES_USER: test\n      POSTGRES_PASSWORD: test\n  redis:\n    image: redis:7-alpine\n  rabbitmq:\n    image: rabbitmq:3-management-alpine
\n\n

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

\n\n

एक परीक्षण का उदाहरण जो डेटाबेस, कैश और कतार के साथ सेवा की बातचीत की जाँच करता है:

\n\n
import org.junit.jupiter.api.Test\nimport org.testcontainers.containers.DockerComposeContainer\nimport org.testcontainers.junit.jupiter.Container\nimport org.testcontainers.junit.jupiter.Testcontainers\nimport java.io.File\n\n@Testcontainers\nclass OrderServiceIntegrationTest {\n\n    companion object {\n        @Container\n        val environment = DockerComposeContainer(\n            File("src/test/resources/docker-com                

ब्लॉग

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