Mockito Java: पूर्ण गाइड उदाहरणों के साथ

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

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

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

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

Mockito एक शक्तिशाली Java लाइब्रेरी है, जिसे यूनिट टेस्ट में mock-ऑब्जेक्ट (नकली ऑब्जेक्ट) बनाने के लिए डिज़ाइन किया गया है। यह आपके टेस्ट किए जाने वाले कोड को डेटाबेस, बाहरी API, फ़ाइल सिस्टम या अन्य सर्विस जैसी निर्भरताओं से अलग करने में मदद करता है। असली ऑब्जेक्ट्स के बजाय, जो धीमे, अस्थिर या जटिल सेटअप वाले हो सकते हैं, आप पूर्व-निर्धारित व्यवहार के साथ उनका अनुकरण बनाते हैं।

Mockito का मुख्य उद्देश्य यूनिट टेस्ट को तेज़, पूर्वानुमानित और बाहरी वातावरण से स्वतंत्र बनाना है। यह लाइब्रेरी Java इकोसिस्टम (Spring, Java EE, Android) में व्यापक रूप से उपयोग की जाती है और मॉकिंग के लिए डी-फैक्टो मानक है।

मुख्य विशेषताएं:

  • Mock-ऑब्जेक्ट बनाना — किसी भी क्लास या इंटरफ़ेस का अनुकरण।
  • व्यवहार परिभाषित करना — रिटर्न वैल्यू सेट करना, एक्सेप्शन फेंकना।
  • कॉल्स का सत्यापन — जांचना कि मेथड्स को सही पैरामीटर और सही संख्या में कॉल किया गया।
  • Spy (आंशिक मॉकिंग) — असली ऑब्जेक्ट का उपयोग करते हुए कुछ मेथड्स को ओवरराइड करना।
  • ArgumentCaptor (आर्गुमेंट कैप्चर) — mock मेथड में भेजे गए पैरामीटर को निकालकर आगे जांच करना।

Mockito की स्थापना (Installation)

चूंकि Mockito एक Java लाइब्रेरी है, इसे pip या npm के माध्यम से स्थापित नहीं किया जाता है। प्रोजेक्ट में इसे जोड़ने के लिए Maven या Gradle बिल्ड सिस्टम का उपयोग किया जाता है।

Maven (pom.xml)

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>5.12.0</version>
    <scope>test</scope>
</dependency>

<!-- JUnit 5 के साथ उपयोग के लिए -->
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>5.12.0</version>
    <scope>test</scope>
</dependency>

Gradle (build.gradle)

testImplementation 'org.mockito:mockito-core:5.12.0'
testImplementation 'org.mockito:mockito-junit-jupiter:5.12.0'

टेस्ट लिखने के समय नवीनतम स्थिर संस्करण का उपयोग करने की सलाह दी जाती है।

त्वरित शुरुआत: कोड उदाहरण

एक सरल उदाहरण देखते हैं। मान लीजिए हमारे पास UserService क्लास है, जो UserRepository पर निर्भर है। हम डेटाबेस शुरू किए बिना UserService का परीक्षण करना चाहते हैं।

// रिपॉजिटरी क्लास (निर्भरता)
public interface UserRepository {
    User findById(Long id);
    void save(User user);
}

// सर्विस क्लास (परीक्षण के तहत)
public class UserService {
    private final UserRepository userRepository;

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

    public String getUserName(Long id) {
        User user = userRepository.findById(id);
        return user != null ? user.getName() : "Unknown";
    }
}

// Mockito का उपयोग करके टेस्ट
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;

@ExtendWith(MockitoExtension.class)
public class UserServiceTest {

    @Mock
    private UserRepository userRepository;

    @Test
    public void testGetUserName() {
        // UserRepository का mock-ऑब्जेक्ट बनाएं (@Mock एनोटेशन से भी बना सकते हैं)
        // UserRepository mockRepo = mock(UserRepository.class);

        // व्यवहार सेट करें: जब findById(1L) कॉल हो, तो एक उपयोगकर्ता लौटाएं
        User mockUser = new User(1L, "Alice");
        when(userRepository.findById(1L)).thenReturn(mockUser);

        // mock-रिपॉजिटरी के साथ सर्विस बनाएं
        UserService userService = new UserService(                    

अनुशंसाएँ