AssertJ Java: पूर्ण गाइड उदाहरण सहित

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

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

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

AssertJ Java: Fluent Assertions की पूरी गाइड

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

AssertJ Java भाषा के लिए एक शक्तिशाली fluent-assertions (फ्लुएंट एसर्शन) लाइब्रेरी है, जो पढ़ने योग्य, अभिव्यंजक और स्व-दस्तावेजीकरण टेस्ट लिखने के लिए डिज़ाइन की गई है। मानक JUnit या TestNG के विपरीत, जो केवल assertEquals(a, b) जैसी बुनियादी विधियाँ प्रदान करते हैं, AssertJ कॉल की चेन के साथ एक समृद्ध API प्रदान करता है, जो टेस्ट कोड को प्राकृतिक भाषा जैसा बनाता है। उदाहरण के लिए, assertTrue(list.contains("foo")) लिखने के बजाय आप assertThat(list).contains("foo") लिखते हैं।

इसकी आवश्यकता क्यों है? पहला, AssertJ टेस्ट की पठनीयता में काफी सुधार करता है। जब कोई डेवलपर assertThat(result).isNotNull().hasSize(5).contains("expected") देखता है, तो वह तुरंत समझ जाता है कि क्या जाँच की जा रही है: परिणाम null नहीं है, आकार 5 है, और इसमें स्ट्रिंग "expected" शामिल है। दूसरा, AssertJ त्रुटियों के बारे में विस्तृत संदेश प्रदान करता है। उबाऊ "expected true but was false" के बजाय आपको "Expected list to contain 'foo' but could not find it in [bar, baz]" मिलेगा। तीसरा, लाइब्रेरी कई डेटा प्रकारों को सपोर्ट करती है: कलेक्शन, स्ट्रिंग्स, संख्याएँ, तिथियाँ, फ़ाइलें, अपवाद और यहाँ तक कि कस्टम ऑब्जेक्ट भी।

AssertJ उन प्रोजेक्ट्स में विशेष रूप से उपयोगी है जहाँ टेस्ट बेस का रखरखाव महत्वपूर्ण है। fluent API के कारण, रिफैक्टरिंग के दौरान टेस्ट कम नाजुक हो जाते हैं, क्योंकि मेथड चेन को आसानी से संशोधित किया जा सकता है। लाइब्रेरी सक्रिय रूप से विकसित हो रही है, इसकी उत्कृष्ट डॉक्यूमेंटेशन है, और उद्योग में व्यापक रूप से उपयोग की जाती है (Spring, Hibernate, Netflix आदि)।

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

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

Maven

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.25.3</version> <!-- Maven Central पर नवीनतम संस्करण जाँचें -->
    <scope>test</scope>
</dependency>

Gradle

testImplementation 'org.assertj:assertj-core:3.25.3'

यदि आप JUnit 5 का उपयोग कर रहे हैं, तो किसी अतिरिक्त डिपेंडेंसी की आवश्यकता नहीं है। JUnit 4 के लिए भी AssertJ बिना किसी समस्या के काम करता है। सुनिश्चित करें कि AssertJ का संस्करण आपके Java संस्करण के साथ संगत है (3.x को Java 8 या उससे ऊपर की आवश्यकता है)।

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

डिपेंडेंसी जोड़ने के बाद, आप तुरंत AssertJ का उपयोग शुरू कर सकते हैं। मुख्य मेथड assertThat() है, जो एक ऑब्जेक्ट लेता है और संबंधित assertion-ऑब्जेक्ट लौटाता है।

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;

public class QuickStartTest {

    @Test
    void testSimpleAssertion() {
        String name = "AssertJ";
        
        // बुनियादी एसर्शन
        assertThat(name)
            .isNotNull()
            .isNotEmpty()
            .startsWith("Ass")
            .endsWith("J")
            .hasSize(7);
        
        // संख्याओं की जाँच
        int number = 42;
        assertThat(number)
            .isPositive()
            .isGreaterThan(40)
            .isLessThan(50);
        
        // कलेक्शन की जाँच
        var list = java.util.List.of("a", "b", "c");
        assertThat(list)
            .hasSize(3)
            .contains("a", "b")
            .doesNotContain("z");
    }
}

यह उदाहरण मुख्य विचार को दर्शाता है: मेथड की एक चेन, जहाँ प्रत्येक मेथड उसी assertion-ऑब्जेक्ट को लौटाता है, जिससे क्रमिक जाँचें लिखी जा सकती हैं। यदि कोई भी एसर्शन विफल होता है, तो टेस्ट एक स्पष्ट संदेश के साथ फेल हो जाता है।

4. मुख्य मेथड/फंक्शन/क्लास

AssertJ सैकड़ों मेथड प्रदान करता है। नीचे सबसे अधिक उपयोग किए जाने वाले 8 मेथड उनके सिग्नेचर, विवरण और उदाहरणों के साथ दिए गए हैं।

4.1. isEqualTo

अनुशंसाएँ