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

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

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

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

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

\n\n

एकीकरण परीक्षण विकास का एक महत्वपूर्ण चरण है, जो एप्लिकेशन घटकों के बाहरी सिस्टम: डेटाबेस, संदेश कतार, REST सेवाओं के साथ इंटरैक्शन की जांच करने की अनुमति देता है। H2 या एम्बेडेड सर्वर का उपयोग करने वाला पारंपरिक दृष्टिकोण अक्सर परीक्षण और उत्पादन वातावरण के बीच अंतर पैदा करता है। समाधान है Docker। इस लेख में, हम Testcontainers लाइब्रेरी और Docker Compose का उपयोग करके Docker के साथ जावा अनुप्रयोगों के एकीकरण परीक्षण को कैसे सेट अप करें, यह समझेंगे। आप सीखेंगे कि वास्तविक कंटेनरों के साथ काम करने वाले परीक्षण कैसे लिखें और उन्हें CI/CD में कैसे एकीकृत करें।

\n\n

एकीकरण परीक्षणों के लिए Docker क्यों?

\n

Docker आपको परीक्षणों से ठीक पहले निर्भरताओं (PostgreSQL, Redis, Kafka) के सटीक संस्करणों के साथ अलग-अलग कंटेनर बनाने और उनके बाद उन्हें नष्ट करने की अनुमति देता है। यह सुनिश्चित करता है:

\n
    \n
  • उत्पादन के साथ समानता — आप एमुलेशन के बजाय वास्तविक डेटाबेस के साथ परीक्षण करते हैं।
  • \n
  • अलगाव — प्रत्येक परीक्षण रन एक साफ स्थिति से शुरू होता है।
  • \n
  • समानांतर निष्पादन — कई परीक्षण वर्ग विभिन्न कंटेनरों का उपयोग कर सकते हैं।
  • \n
  • पुनरुत्पादन क्षमता — परीक्षण स्थानीय मशीन और CI में समान रूप से काम करते हैं।
  • \n
\n\n

Testcontainers के साथ प्रोजेक्ट सेटअप

\n

Testcontainers एक जावा लाइब्रेरी है जो Docker कंटेनरों के जीवनचक्र का प्रबंधन करती है। pom.xml (Maven) में निर्भरता जोड़ें:

\n
<dependency>\n    <groupId>org.testcontainers</groupId>\n    <artifactId>testcontainers</artifactId>\n    <version>1.19.3</version>\n    <scope>test</scope>\n</dependency>\n<dependency>\n    <groupId>org.testcontainers</groupId>\n    <artifactId>postgresql</artifactId>\n    <version>1.19.3</version>\n    <scope>test</scope>\n</dependency>\n<dependency>\n    <groupId>org.springframework.boot</groupId>\n    <artifactId>spring-boot-starter-test</artifactId>\n    <scope>test</scope>\n</dependency>
\n\n

Gradle के लिए, build.gradle में जोड़ें:

\n
testImplementation 'org.testcontainers:testcontainers:1.19.3'\ntestImplementation 'org.testcontainers:postgresql:1.19.3'
\n\n

उदाहरण: PostgreSQL के साथ रिपॉजिटरी का परीक्षण

\n

उपयोगकर्ताओं के साथ काम करने के लिए एक सरल सेवा पर विचार करें। एक परीक्षण बनाएं जो PostgreSQL कंटेनर चलाता है और डेटा सेविंग की जांच करता है।

\n\n
import org.junit.jupiter.api.Test;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.DynamicPropertyRegistry;\nimport org.springframework.test.context.DynamicPropertySource;\nimport org.testcontainers.containers.PostgreSQLContainer;\nimport org.testcontainers.junit.jupiter.Container;\nimport org.testcontainers.junit.jupiter.Testcontainers;\n\nimport static org.assertj.core.api.Assertions.assertThat;\n\n@Testcontainers\n@SpringBootTest\nclass UserRepositoryTest {\n\n    @Container\n    static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:15")\n            .withDatabaseName("testdb")\n            .withUsername("test")\n            .withPassword("test");\n\n    @DynamicPropertySource\n    static void configureProperties(DynamicPropertyRegistry registry) {\n        registry.add("spring.datasource.url", postgres::getJdbcUrl);\n        registry.add("spring.datasource.username", postgres::getUsername);\n        registry.add("spring.datasource.password", postgres::getPassword);\n    }\n\n    @Autowired\n    private UserRepository userRepository;\n\n    @Test\n    void shouldSaveAndFindUser() {\n        User user = new User("john_doe", "john@example                

ब्लॉग

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