Testcontainers Java: पूर्ण गाइड उदाहरणों के साथ

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

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

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

Testcontainers Java: पूर्ण गाइड उदाहरणों के साथ

1. यह क्या है और इसकी आवश्यकता क्यों है

Testcontainers एक शक्तिशाली Java (और अन्य JVM भाषाओं) लाइब्रेरी है, जो आपको अपने इंटीग्रेशन टेस्ट के अंदर सीधे Docker कंटेनर चलाने की अनुमति देती है। बाहरी डेटाबेस, मैसेज ब्रोकर या अन्य सेवाओं पर निर्भर रहने के बजाय, जो अलग-अलग वातावरणों में उपलब्ध नहीं हो सकते या अलग तरीके से कॉन्फ़िगर हो सकते हैं, Testcontainers टेस्ट से पहले आवश्यक कंटेनरों को स्वचालित रूप से शुरू करता है और टेस्ट पूरा होने के बाद उन्हें हटा देता है। यह टेस्ट की शुद्धता और पुनरुत्पादन क्षमता सुनिश्चित करता है।

इसकी आवश्यकता क्यों है? पारंपरिक इंटीग्रेशन टेस्ट अक्सर "एनवायरनमेंट समस्या" से ग्रस्त होते हैं: टेस्ट डेवलपर की मशीन पर पास हो सकता है, लेकिन CI सर्वर पर डेटाबेस के अलग वर्जन या किसी विशेष सेवा की कमी के कारण फेल हो सकता है। Testcontainers इस समस्या को हमेशा के लिए हल करता है। आप आवश्यक इंफ्रास्ट्रक्चर (जैसे, "PostgreSQL 15 जिसमें uuid-ossp एक्सटेंशन सक्षम है") को सीधे टेस्ट कोड में परिभाषित करते हैं, और लाइब्रेरी गारंटी देती है कि यह इंफ्रास्ट्रक्चर एक अलग Docker कंटेनर में बनाया जाएगा। यह टेस्ट को वास्तव में पोर्टेबल और विश्वसनीय बनाता है।

यह लाइब्रेरी DAO लेयर, रिपॉजिटरी, कतारों (RabbitMQ, Kafka), कैश (Redis) के साथ काम करने वाली सेवाओं और यहां तक कि WireMock या Nginx कंटेनरों के साथ HTTP क्लाइंट के परीक्षण के लिए विशेष रूप से उपयोगी है। Testcontainers लोकप्रिय तकनीकों (PostgreSQL, MySQL, MongoDB, Redis, Kafka, LocalStack और कई अन्य) के लिए सुविधाजनक मॉड्यूल भी प्रदान करता है, जो सेटअप को न्यूनतम कर देता है।

2. इंस्टॉलेशन

Testcontainers Maven Central के माध्यम से वितरित किया जाता है। Java प्रोजेक्ट में इसे शामिल करने के लिए, अपने pom.xml (Maven) या build.gradle (Gradle) में निम्नलिखित डिपेंडेंसी जोड़ें।

Maven (pom.xml)

<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>testcontainers</artifactId>
    <version>1.19.7</version> <!-- Maven Central पर नवीनतम वर्जन देखें -->
    <scope>test</scope>
</dependency>

<!-- अतिरिक्त मॉड्यूल, उदाहरण के लिए PostgreSQL के लिए -->
<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>postgresql</artifactId>
    <version>1.19.7</version>
    <scope>test</scope>
</dependency>

Gradle (build.gradle)

testImplementation 'org.testcontainers:testcontainers:1.19.7'
testImplementation 'org.testcontainers:postgresql:1.19.7'

महत्वपूर्ण: सुनिश्चित करें कि आपकी मशीन (या CI एजेंट) पर Docker Engine इंस्टॉल और चालू है। Testcontainers सॉकेट के माध्यम से Docker के साथ इंटरैक्ट करता है। यदि आप macOS या Windows पर Docker Desktop का उपयोग कर रहे हैं, तो वह चालू होना चाहिए। Linux पर, सुनिश्चित करें कि जिस उपयोगकर्ता से टेस्ट चलाए जा रहे हैं, उसके पास Docker के साथ काम करने की अनुमति है (उदाहरण के लिए, docker ग्रुप के माध्यम से)।

3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण

आइए एक सरल टेस्ट लिखें जो PostgreSQL के साथ एक कंटेनर चलाता है, एक टेबल बनाता है, डेटा डालता है और उसकी जांच करता है। यह Testcontainers के लिए एक क्लासिक "Hello, World!" उदाहरण है।

import org.junit.jupiter.api.Test;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import static org.junit.jupiter.api.Assertions.assertEquals;

@Testcontainers // कंटेनरों के जीवनचक्र प्रबंधन को स्वचालित रूप से सक्षम करता है
class QuickStartTest {

    // @Container इंगित करता है कि कंटेनर का प्रबंधन किया जाना चाहिए (टेस्ट से पहले शुरू करें, टेस्ट के बाद रोकें)
    @Container
    private PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:                    

अनुशंसाएँ