परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण · पाठ

अपवाद परीक्षण और टाइमआउट

अपेक्षित अपवादों की पुष्टि करें और अनंत लूप या लंबे समय तक चलने वाले परीक्षण मामलों को रोकने के लिए टाइमआउट लागू करें।

पाठ 3, कुल 4 में से11 चरण

अपवाद परीक्षण और टाइमआउट, CoddyKit पर परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

अपेक्षित त्रुटियों का परीक्षण

कभी-कभी आपका कोड कुछ विशेष, अमान्य परिस्थितियों में त्रुटि उत्पन्न करने के लिए बनाया जाता है। उदाहरण के लिए, शून्य से भाग देना। अपवाद परीक्षण सुनिश्चित करता है कि आपका कोड इन परिस्थितियों को सही ढंग से संभालता है।

  • यह सफलता और विफलता, दोनों मार्गों की पुष्टि करता है।
  • यह सुनिश्चित करता है कि आपके त्रुटि संदेश सही हैं।

JUnit के साथ अपवाद पकड़ना

JUnit 5 यह जाँचने के लिए assertThrows विधि प्रदान करता है कि कोई विशेष अपवाद उत्पन्न हुआ है। अपेक्षित अपवादों का परीक्षण करने का यह अनुशंसित और सबसे साफ़ तरीका है।

  • यह अपेक्षित अपवाद प्रकार लेता है, जैसे IllegalArgumentException.class।
  • यह एक लैम्ब्डा एक्सप्रेशन लेता है, यानी कोड का छोटा भाग, जिससे अपवाद उत्पन्न होना चाहिए।

`assertThrows` का प्रयोग

आइए, एक सरल परीक्षण में assertThrows देखें। हमारे Calculator की divide विधि को भाजक शून्य होने पर IllegalArgumentException उत्पन्न करना चाहिए।

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class Calculator {
    public int divide(int a, int b) {
        if (b == 0) {
            throw new IllegalArgumentException("Divisor cannot be zero");
        }
        return a / b;
    }
}

public class ExceptionTest {
    @Test
    void testDivideByZeroThrowsException() {
        Calculator calc = new Calculator();
        assertThrows(IllegalArgumentException.class, () -> {
            calc.divide(10, 0);
        });
    }
}

अपवाद का विवरण जाँचना

अक्सर केवल यह जानना पर्याप्त नहीं होता कि अपवाद उत्पन्न हुआ है। आप उसके विवरण, जैसे अपवाद संदेश या अन्य गुणों की भी जाँच करना चाह सकते हैं।

assertThrows विधि वास्तविक अपवाद ऑब्जेक्ट लौटाती है, जिससे आप उस पर आगे की अभिकथन जाँच कर सकते हैं।

अपवाद संदेश की अभिकथन जाँच

यहाँ हम assertThrows द्वारा लौटाए गए अपवाद ऑब्जेक्ट को प्राप्त करते हैं और फिर उसके संदेश की पुष्टि करने के लिए assertEquals का उपयोग करते हैं। इससे आपके अपवाद परीक्षण बहुत सटीक हो जाते हैं।

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class Calculator {
    public int divide(int a, int b) {
        if (b == 0) {
            throw new IllegalArgumentException("Divisor cannot be zero");
        }
        return a / b;
    }
}

public class ExceptionMessageTest {
    @Test
    void testDivideByZeroMessage() {
        Calculator calc = new Calculator();
        IllegalArgumentException thrown = assertThrows(
            IllegalArgumentException.class,
            () -> calc.divide(10, 0),
            "Expected divide() to throw, but it didn't"
        );
        assertEquals("Divisor cannot be zero", thrown.getMessage());
    }
}

समय-सीमा से अंतहीन परीक्षण रोकना

कभी-कभी कोड का कोई भाग अनंत लूप में फँस सकता है या पूरा होने में अप्रत्याशित रूप से लंबा समय ले सकता है। इससे आपका परीक्षण समूह अनिश्चित समय तक रुक सकता है।

समय-सीमाएँ एक महत्वपूर्ण सुविधा हैं, जो निर्दिष्ट अवधि से अधिक समय लेने पर परीक्षण को स्वचालित रूप से विफल कर देती हैं और सुनिश्चित करती हैं कि आपका परीक्षण समूह प्रभावी ढंग से चले।

`@Timeout` के साथ समय-सीमा निर्धारित करना

JUnit 5 परीक्षण विधियों या पूरी परीक्षण क्लास के लिए अधिकतम अवधि निर्धारित करने हेतु @Timeout एनोटेशन का उपयोग करता है। आप अधिकतम value और समय की एक unit निर्दिष्ट करते हैं।

  • सामान्य इकाइयों में TimeUnit.SECONDS, TimeUnit.MILLISECONDS और TimeUnit.MINUTES शामिल हैं।
  • यदि परीक्षण निर्दिष्ट समय से अधिक चलता है, तो वह विफल हो जाएगा।

विधि-स्तरीय समय-सीमा का उदाहरण

किसी एक परीक्षण विधि पर समय-सीमा लागू करने का तरीका यहाँ बताया गया है। यदि longRunningTask() को 1 सेकंड से अधिक समय लगता है, तो यह परीक्षण स्वचालित रूप से विफल हो जाएगा।

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import java.util.concurrent.TimeUnit;
import static org.junit.jupiter.api.Assertions.*;

public class TimeoutMethodTest {

    // A method that might take too long
    private void longRunningTask() throws InterruptedException {
        Thread.sleep(1500); // Simulates a task taking 1.5 seconds
    }

    @Test
    @Timeout(value = 1, unit = TimeUnit.SECONDS)
    void testTaskShouldCompleteWithinOneSecond() throws InterruptedException {
        longRunningTask(); // This will cause the test to fail due to timeout
        assertTrue(true, "Task completed (but it will timeout)");
    }
}

क्लास-स्तरीय समय-सीमाएँ

आप @Timeout एनोटेशन को क्लास स्तर पर भी लागू कर सकते हैं। जब इसे किसी परीक्षण क्लास पर लगाया जाता है, तो उस क्लास की सभी परीक्षण विधियाँ निर्धारित समय-सीमा अपना लेती हैं।

यदि किसी परीक्षण विधि पर अपनी @Timeout एनोटेशन भी हो, तो उस विशेष विधि के लिए विधि-स्तरीय समय-सीमा क्लास-स्तरीय समय-सीमा को बदल देती है।

अपनी समझ जाँचें

किसी परीक्षण विधि का पूर्वनिर्धारित समय-सीमा के भीतर निष्पादन पूरा होना सुनिश्चित करने के लिए JUnit 5 की कौन-सी सुविधा सबसे उपयुक्त है, ताकि सीमा पार होने पर परीक्षण विफल हो जाए?

पुनरावलोकन: अपवाद और समय-सीमाएँ

इस पाठ में आपने अपेक्षित त्रुटियों के लिए मजबूत परीक्षण लिखना और नियंत्रण से बाहर होने वाले परीक्षणों को रोकना सीखा:

  • आपने यह जाँचने के लिए assertThrows का उपयोग किया कि आपके कोड द्वारा विशेष अपवाद उत्पन्न किए जाते हैं।
  • आपने अपवाद के विशिष्ट विवरण, जैसे उसके संदेश, की जाँच करना सीखा।
  • आपने परीक्षण विधियों और क्लासों के लिए समय-सीमाएँ निर्धारित करने हेतु @Timeout एनोटेशन लागू किया, जिससे परीक्षण का निष्पादन प्रभावी बना रहे।
शुरुआत निःशुल्क

एआई शिक्षक के साथ परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “अपवाद परीक्षण और टाइमआउट” पाठ निःशुल्क है?

हाँ — परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “अपवाद परीक्षण और टाइमआउट” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“अपवाद परीक्षण और टाइमआउट” में मैं क्या सीखूँगा?

अपेक्षित अपवादों की पुष्टि करें और अनंत लूप या लंबे समय तक चलने वाले परीक्षण मामलों को रोकने के लिए टाइमआउट लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“अपवाद परीक्षण और टाइमआउट” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. परीक्षण जीवनचक्र और क्रम
  2. पैरामीटरयुक्त और गतिशील परीक्षण
  3. अपवाद परीक्षण और टाइमआउट
  4. सशर्त परीक्षण और पूर्वधारणाएँ
← परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पर वापस जाएँ