Kotlin के साथ Docker एकीकरण परीक्षण: संपूर्ण गाइड

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

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

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

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

\n\n

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

\n\n

Kotlin एकीकरण परीक्षण के लिए Docker क्यों महत्वपूर्ण है?

\n\n

पारंपरिक एकीकरण परीक्षण अक्सर वातावरण संबंधी समस्याओं से ग्रस्त होते हैं: डेटाबेस के विभिन्न संस्करण, ड्राइवर असंगतता, पृष्ठभूमि प्रक्रियाओं के कारण "फ्लोटिंग" परीक्षण। Docker इन समस्याओं को हल करता है, प्रदान करता है:

\n\n
    \n
  • पृथक्करण: प्रत्येक परीक्षण एक साफ कंटेनर में चलता है
  • \n
  • पुनरुत्पादनीयता: किसी भी मशीन पर समान वातावरण
  • \n
  • स्केलेबिलिटी: जटिल माइक्रोसर्विस आर्किटेक्चर का परीक्षण करने की क्षमता
  • \n
  • गति: कंटेनरों का तेज़ प्रारंभ और रोक
  • \n
\n\n

Docker के साथ एकीकरण परीक्षणों के लिए Kotlin प्रोजेक्ट सेटअप

\n\n

शुरू करने के लिए, build.gradle.kts में आवश्यक निर्भरताएँ जोड़ें:

\n\n
dependencies {\n    // Testcontainers\n    testImplementation("org.testcontainers:testcontainers:1.19.3")\n    testImplementation("org.testcontainers:postgresql:1.19.3")\n    testImplementation("org.testcontainers:kafka:1.19.3")\n    testImplementation("org.testcontainers:junit-jupiter:1.19.3")\n    \n    // डेटाबेस\n    testImplementation("org.postgresql:postgresql:42.7.1")\n    \n    // JUnit 5\n    testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")\n    \n    // Spring Boot अनुप्रयोगों के लिए\n    testImplementation("org.springframework.boot:spring-boot-starter-test:3.2.1")\n    testImplementation("org.springframework.boot:spring-boot-testcontainers:3.2.1")\n}
\n\n

मूल उदाहरण: PostgreSQL के साथ परीक्षण

\n\n

सबसे सरल उदाहरण पर विचार करें - PostgreSQL के साथ काम करने वाले रिपॉजिटरी का परीक्षण। Testcontainers का उपयोग करके एक एकीकरण परीक्षण बनाएं:

\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\nimport javax.sql.DataSource\n\n@Testcontainers\nclass UserRepositoryIntegrationTest {\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 find user`() {\n        val dataSource = createDataSource(postgres)\n        val repository = UserRepository(dataSource)\n        \n        val user = User(id = null, name = "इवान पेत्रोव", email = "ivan@example.com")\n        val savedUser = repository.save(user)\n        \n        val foundUser = repository.findById(savedUser.id!!)\n        assert(foundUser != null)\n        assert(foundUser?.name == "इवान पेत्रोव")\n    }\n\n    private fun createDataSource(container: PostgreSQLContainer<*>): DataSource {\n        val config = HikariConfig().apply {\n            jdbcUrl = container.jdbcUrl\n            username = container.username\n            password = container.password\n            driverClassName = container.driverClassName\n        }\n        return HikariDataSource(config)\n    }\n}
\n\n

Kafka और Docker Compose के साथ माइक्रोसर्विसेज का परीक्षण

\n\n

अधिक जटिल परिदृश्यों के लिए, जहाँ कई सेवाओं की आवश्यकता होती है, Testcontainers के माध्यम से Docker Compose का उपयोग करें:

\n\n
import org.testcontainers.containers.DockerComposeContainer\nimport org.testcontainers.containers.wait.strategy.Wait\nimport java.io.File\n\nclass OrderService                

ब्लॉग

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