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

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

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

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

परिचय: जावा में परीक्षण की आवश्यकता क्यों है?

\n

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

\n

चाहे आप Spring Boot पर माइक्रोसर्विसेज लिख रहे हों या डेस्कटॉप एप्लिकेशन, परीक्षण पिरामिड को समझना एक अनिवार्य कौशल है। चलिए शुरू करते हैं!

\n\n

1. यूनिट-परीक्षण: गुणवत्ता की नींव

\n

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

\n\n

1.1 मुख्य उपकरण

\n
    \n
  • JUnit 5 — Java के लिए मानक फ्रेमवर्क (नवीनतम संस्करण — Jupiter)।
  • \n
  • Mockito — mock-ऑब्जेक्ट (स्टब) बनाने के लिए लाइब्रेरी।
  • \n
  • AssertJ — फ्लूएंट-असर्ट के समृद्ध सेट वाली लाइब्रेरी।
  • \n
\n\n

1.2 JUnit 5 और Mockito के साथ यूनिट-टेस्ट का उदाहरण

\n

मान लीजिए, हमारे पास एक सेवा UserService है जो रिपॉजिटरी UserRepository पर निर्भर करती है:

\n
public class UserService {\n    private final UserRepository repository;\n\n    public UserService(UserRepository repository) {\n        this.repository = repository;\n    }\n\n    public String getUserName(Long id) {\n        User user = repository.findById(id);\n        return user != null ? user.getName() : "Unknown";\n    }\n}
\n

हम Mockito के माध्यम से बाहरी निर्भरता को अलग करते हुए एक यूनिट-टेस्ट लिखते हैं:

\n
import org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.extension.ExtendWith;\nimport org.mockito.InjectMocks;\nimport org.mockito.Mock;\nimport org.mockito.junit.jupiter.MockitoExtension;\n\nimport static org.junit.jupiter.api.Assertions.assertEquals;\nimport static org.mockito.Mockito.when;\n\n@ExtendWith(MockitoExtension.class)\nclass UserServiceTest {\n\n    @Mock\n    private UserRepository userRepository;\n\n    @InjectMocks\n    private UserService userService;\n\n    @Test\n    void testGetUserName_WhenUserExists() {\n        // Arrange\n        User mockUser = new User(1L, "Alice");\n        when(userRepository.findById(1L)).thenReturn(mockUser);\n\n        // Act\n        String result = userService.getUserName(1L);\n\n        // Assert\n        assertEquals("Alice", result);\n    }\n\n    @Test\n    void testGetUserName_WhenUserNotFound() {\n        when(userRepository.findById(99L)).thenReturn(null);\n\n        String result = userService.getUserName(99L);\n\n        assertEquals("Unknown", result);\n    }\n}
\n

अच्छे अभ्यास का नियम: एक टेस्ट — एक जाँच। समझने योग्य विधि नामों का उपयोग करें (जैसे, testGetUserName_WhenUserExists)।

\n\n

2. इंटीग्रेशन-परीक्षण: अंतःक्रियाओं की जाँच

\n

इंटीग्रेशन टेस्ट जाँचते हैं कि सिस्टम के घटक एक साथ कैसे काम करते हैं: डेटाबेस, फ़ाइल सिस्टम, बाहरी API। वे यूनिट-टेस्ट से धीमे होते हैं, लेकिन कनेक्शन की सटीकता में अधिक विश्वास देते हैं।

\n\n

2.1 जावा इंटीग्रेशन परीक्षण के लिए उपकरण

\n
    \n
  • Spring Boot Test — एप्लिकेशन कॉन्टेक्स्ट शुरू करने के लिए @SpringBootTest।
  • \n
  • Testcontainers — Docker कंटेनरों में वास्तविक DB (PostgreSQL, MySQL) चलाना।
  • \n
  • H2 — तेज़ टेस्ट के लिए in-memory डेटाबेस।
  • \n
\n\n

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

\n
import org.junit.jupiter.api.Test;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.t                

ब्लॉग

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