जावा में परीक्षण: यूनिट, इंटीग्रेशन, E2E — पूर्ण गाइड

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

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

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

Java में परीक्षण: यूनिट से एंड-टू-एंड परीक्षण तक

गुणवत्तापूर्ण परीक्षण विश्वसनीय सॉफ्टवेयर की नींव है। Java की दुनिया में एक स्थापित परीक्षण पिरामिड है, जिसमें तीन मुख्य स्तर शामिल हैं: unit (यूनिट), integration (इंटीग्रेशन) और e2e (एंड-टू-एंड) परीक्षण। इस लेख में हम इनमें से प्रत्येक का विश्लेषण करेंगे, Java पर व्यावहारिक उदाहरण देंगे और बताएंगे कि आप अपने प्रोजेक्ट में सही परीक्षण रणनीति कैसे बना सकते हैं।



1. Unit-परीक्षण: पिरामिड का आधार

Unit-परीक्षण प्रोग्राम के अलग-अलग घटकों को अलगाव में जांचते हैं — आमतौर पर एक क्लास या मेथड। ये तेजी से निष्पादित होते हैं, बाहरी निर्भरताओं (DB, API) की आवश्यकता नहीं होती है, और अधिकांश बिजनेस लॉजिक को कवर करना चाहिए।



Java में unit-परीक्षण के लिए उपकरण

  • JUnit 5 — परीक्षण लिखने के लिए मानक फ्रेमवर्क।
  • Mockito — मॉक ऑब्जेक्ट बनाने के लिए लाइब्रेरी।
  • AssertJ — पठनीय जांच के लिए fluent-असर्ट।


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

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



// परीक्षण के लिए क्लासpublic class OrderService {    private final PaymentGateway paymentGateway;

public OrderService(PaymentGateway paymentGateway) { this.paymentGateway = paymentGateway; }

public double calculateDiscount(double amount) { if (amount > 1000) { return amount * 0.1; // 10% छूट } return 0; }}

// 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.assertEquals;

@ExtendWith(MockitoExtension.class)public class OrderServiceTest {

@Mock private PaymentGateway paymentGateway;

@InjectMocks private OrderService orderService;

@Test public void testCalculateDiscount_AmountAbove1000_Returns10Percent() { double result = orderService.calculateDiscount(1500); assertEquals(150.0, result, 0.001); }

@Test public void testCalculateDiscount_AmountBelow1000_ReturnsZero() { double result = orderService.calculateDiscount(500); assertEquals(0.0, result); }}


सर्वोत्तम अभ्यास: सामान्य डेटा को इनिशियलाइज़ करने के लिए @BeforeEach का उपयोग करें, प्राइवेट मेथड्स का सीधे परीक्षण करने से बचें, और "एक परीक्षण में एक जांच" के नियम का पालन करें।



2. इंटीग्रेशन परीक्षण: इंटरैक्शन की जांच

इंटीग्रेशन परीक्षण जांचते हैं कि कई मॉड्यूल एक साथ कैसे काम करते हैं — उदाहरण के लिए, डेटाबेस, मैसेज क्यू या बाहरी API के साथ सर्विस का इंटरैक्शन। Unit-परीक्षणों के विपरीत, इनमें वास्तविक या in-memory निर्भरताओं का उपयोग किया जाता है।



इंटीग्रेशन परीक्षणों के लिए उपकरण

  • Spring Boot Test — Spring एप्लिकेशन के परीक्षण के लिए।
  • Testcontainers — Docker कंटेनर (DB, Kafka) चलाने के लिए।
  • H2 Database — तेज परीक्षणों के लिए in-memory डेटाबेस।


Spring Boot के साथ इंटीग्रेशन परीक्षण का उदाहरण

DB (परीक्षण में H2 का उपयोग करते हैं) के साथ वास्तविक कनेक्शन के साथ REST-कंट्रोलर का परीक्षण कर रहे हैं।



// कंट्रोलर@RestController@RequestMapping("/api/users")public class UserController {    private final UserRepository userRepository;

public UserController(UserRepository userRepository) { this.userRepository = userRepository; }

@GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userRepository.findById(id) .orElseThrow(() -> new Runti ```

ब्लॉग

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