Testcontainers .NET C# (.NET) पूरी गाइड: उदाहरण और सेटअप

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

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

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

Testcontainers .NET C# (.NET) के लिए: पूरी गाइड उदाहरण सहित

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

Testcontainers का मुख्य विचार यह है कि इंटीग्रेशन टेस्ट को यूनिट टेस्ट जितना ही सरल और तेज़ बनाया जाए। आप बस एक टेस्ट लिखते हैं जिसमें बताते हैं कि आपको, उदाहरण के लिए, PostgreSQL या Redis चाहिए। लाइब्रेरी अपने आप संबंधित Docker इमेज डाउनलोड करती है (अगर पहले से नहीं है), कंटेनर शुरू करती है, उसके तैयार होने का इंतज़ार करती है, और आपको कनेक्शन स्ट्रिंग प्रदान करती है। टेस्ट खत्म होने के बाद, कंटेनर अपने आप बंद और डिलीट हो जाता है। इससे टेस्ट वातावरण साफ रहता है, कोई "कचरा" नहीं बचता, और यह किसी भी डेवलपर मशीन या CI सर्वर पर पूरी तरह से दोहराया जा सकता है।

Testcontainers .NET, लोकप्रिय Java लाइब्रेरी Testcontainers का आधिकारिक पोर्ट है। यह .NET इकोसिस्टम (xUnit, NUnit और MSTest सहित) को पूरी तरह सपोर्ट करता है। लाइब्रेरी में ज़्यादातर लोकप्रिय सर्विसेज (डेटाबेस, NoSQL, क्यू, वेब सर्वर) के लिए तैयार मॉड्यूल हैं, और किसी भी Docker इमेज के लिए कस्टम कंटेनर बनाना भी आसान है। Testcontainers .NET का उपयोग .NET समुदाय में विश्वसनीय और गुणवत्तापूर्ण इंटीग्रेशन टेस्ट लिखने का आधुनिक मानक है।

इंस्टॉलेशन

Testcontainers .NET लाइब्रेरी को इंस्टॉल करने के लिए NuGet पैकेज मैनेजर का उपयोग किया जाता है। अपने प्रोजेक्ट की रूट डायरेक्टरी में टर्मिनल में या Visual Studio के पैकेज मैनेजर कंसोल में निम्न कमांड चलाएँ:

dotnet add package Testcontainers

यह कमांड मुख्य Testcontainers पैकेज इंस्टॉल करेगा, जिसमें बेस क्लासेज और कस्टम कंटेनर के लिए सपोर्ट शामिल है। किसी विशिष्ट सर्विस (जैसे PostgreSQL, MSSQL, Redis) के लिए अतिरिक्त पैकेज की आवश्यकता हो सकती है। इन्हें इसी तरह इंस्टॉल किया जाता है:

dotnet add package Testcontainers.PostgreSql
dotnet add package Testcontainers.Redis
dotnet add package Testcontainers.MsSql
dotnet add package Testcontainers.MongoDb
dotnet add package Testcontainers.RabbitMq

पैकेज इंस्टॉल करने के बाद, सुनिश्चित करें कि आपकी मशीन पर Docker Daemon (Windows/Mac के लिए Docker Desktop या Linux के लिए Docker Engine) चल रहा है। Testcontainers, Docker के API के माध्यम से उससे संवाद करता है।

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

आइए xUnit का उपयोग करके एक सरल टेस्ट लिखें, जो PostgreSQL कंटेनर शुरू करे, एक टेबल बनाए, डेटा डाले और उसे पढ़कर जांच करे। यह उदाहरण लाइब्रेरी के मूल सिद्धांत को दर्शाता है।

using Testcontainers.PostgreSql;
using Xunit;
using Npgsql;

namespace MyIntegrationTests;

public class PostgresQuickStartTest : IAsyncLifetime
{
    private PostgreSqlContainer _postgresContainer;

    // IAsyncLifetime कंटेनर के लाइफसाइकल को मैनेज करने की अनुमति देता है
    public async Task InitializeAsync()
    {
        // 1. डिफ़ॉल्ट सेटिंग्स के साथ कंटेनर को परिभाषित करें
        _postgresContainer = new PostgreSqlBuilder()
            .WithImage("postgres:15-alpine") // इमेज निर्दिष्ट करें
            .WithDatabase("testdb")          // DB का नाम
            .WithUsername("testuser")        // यूज़रनेम
            .WithPassword("testpassword")    // पासवर्ड
            .Build();                    

अनुशंसाएँ