जावा में परीक्षण: यूनिट, इंटीग्रेशन, e2e आरंभ से अंत तक

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

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

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

परिचय: क्यों परीक्षण गुणवत्तापूर्ण Java-कोड की नींव है

प्रत्येक Java डेवलपर ने ऐसी स्थिति का सामना किया है जहाँ एक बग को ठीक करने के बाद तीन नए बग सामने आ जाते हैं। इस दुष्चक्र को तोड़ने के लिए, परीक्षण मौजूद है। यह सिर्फ चेकलिस्ट में एक टिक नहीं है, बल्कि एक पेशेवर अनुशासन है जो उत्पाद की नसों, पैसे और प्रतिष्ठा को बचाता है।

इस लेख में, हम परीक्षण के तीन प्रमुख स्तरों पर चर्चा करेंगे: unit (मॉड्यूलर), integration (एकीकरण) और e2e (end-to-end)। हम लोकप्रिय फ्रेमवर्क: JUnit 5, Mockito, Spring Boot Test और Selenium का उपयोग करके Java में व्यावहारिक उदाहरणों के साथ उनकी जाँच करेंगे। आप सीखेंगे कि सही परीक्षण पिरामिड कैसे बनाया जाए और प्रोजेक्ट को बेकार परीक्षणों से कैसे न भरा जाए।



1. Unit-परीक्षण: कोड की परमाणु इकाइयों की जाँच

Unit-परीक्षण (मॉड्यूलर परीक्षण) सबसे निचला और सबसे तेज़ स्तर है। वे बाहरी निर्भरताओं (DB, API, फ़ाइल सिस्टम) से अलग एक 'यूनिट' (आमतौर पर एक विधि या वर्ग) के काम की जाँच करते हैं।



1.1 उपकरण और फ्रेमवर्क

  • JUnit 5 — Java में परीक्षण लिखने का डी-फैक्टो मानक।
  • Mockito — नकली (mocks) और स्टब (stubs) बनाने के लिए लाइब्रेरी।
  • AssertJ — फ्लुएंट जाँच (अभिकथन) के लिए लाइब्रेरी।


1.2 JUnit 5 और Mockito के साथ Unit-परीक्षण का उदाहरण

मान लीजिए कि हमारे पास एक सेवा OrderService है जो रिपॉजिटरी PaymentRepository पर निर्भर करती है। हम वास्तविक DB को कॉल किए बिना सेवा के तर्क का परीक्षण करना चाहते हैं।

// परीक्षण किया जाने वाला वर्गpublic class OrderService {    private final PaymentRepository paymentRepository;

public OrderService(PaymentRepository paymentRepository) { this.paymentRepository = paymentRepository; }

public String processOrder(Order order) { if (order.getAmount() <= 0) { throw new IllegalArgumentException("ऑर्डर की राशि सकारात्मक होनी चाहिए"); } boolean success = paymentRepository.pay(order); return success ? "सफलतापूर्वक भुगतान किया गया" : "भुगतान में त्रुटि"; }}

// Unit-परीक्षणimport org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.junit.jupiter.MockitoExtension;import static org.junit.jupiter.api.Assertions.*;import static org.mockito.Mockito.*;

@ExtendWith(MockitoExtension.class)class OrderServiceTest {

@Mock private PaymentRepository paymentRepository;

@InjectMocks private OrderService orderService;

@Test void testProcessOrder_Success() { // व्यवस्थित करें Order order = new Order(100.0); when(paymentRepository.pay(order)).thenReturn(true);

// कार्य करें String result = orderService.processOrder(order);

// जाँच करें assertEquals("सफलतापूर्वक भुगतान किया गया", result); verify(paymentRepository, times(1)).pay(order); }

@Test void testProcessOrder_NegativeAmount() { // व्यवस्थित करें Order order = new Order(-10.0);

// कार्य करें और जाँच करें assertThrows(IllegalArgumentException.class, () -> { orderService.processOrder(order); }); }}

Unit-परीक्षणों के लिए Best Practices:

  • एक परीक्षण — एक जाँच (FIRST सिद्धांत: Fast, Isolated, Repeatable, Self-validating, Timely)।
  • स्पष्ट नामों का उपयोग करें: shouldReturnSuccess_whenPaymentIsApproved।
  • private-विधियों का परीक्षण न करें — सार्वजनिक अनुबंध का परीक्षण करें।
  • सीमा मामलों को कवर करें: null, खाली स्ट्रिंग, ऋणात्मक संख्याएँ।


2. एकीकरण परीक्षण: घटकों के बीच परस्पर क्रिया की जाँच

एकीकरण परीक्षण जाँचते हैं कि विभिन्न मॉड्यूल सिस्टम

ब्लॉग

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