"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जुनीट और मॉकिटो के साथ स्प्रिंग बूट में टेस्ट स्वचालित करना

जुनीट और मॉकिटो के साथ स्प्रिंग बूट में टेस्ट स्वचालित करना

2024-11-09 को प्रकाशित
ब्राउज़ करें:152

Automating Tests in Spring Boot with JUnit and Mockito

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

JUnit जावा के लिए व्यापक रूप से उपयोग किया जाने वाला परीक्षण ढांचा है जो परीक्षणों को प्रभावी ढंग से संरचना और निष्पादित करने में मदद करने के लिए एनोटेशन और दावे प्रदान करता है। यह डेवलपर्स को दोहराए जाने योग्य परीक्षण लिखने की अनुमति देता है और इकाई और एकीकरण परीक्षण दोनों का समर्थन करता है। दूसरी ओर, मॉकिटो एक शक्तिशाली मॉकिंग ढांचा है जो परीक्षण उद्देश्यों के लिए नकली वस्तुओं के निर्माण को सक्षम बनाता है। यह डेवलपर्स को परीक्षण के तहत कार्यक्षमता को अलग करते हुए, जटिल निर्भरता के व्यवहार का अनुकरण करने की अनुमति देता है। मॉकिटो के साथ संयोजन में JUnit का उपयोग करके, हम वास्तविक डेटाबेस कनेक्शन, बाहरी सेवाओं या जटिल कॉन्फ़िगरेशन पर भरोसा किए बिना अपने स्प्रिंग बूट अनुप्रयोगों के व्यावसायिक तर्क का पूरी तरह से परीक्षण कर सकते हैं।

आइए एक व्यावहारिक उदाहरण पर गौर करें कि कैसे JUnit और Mockito को स्प्रिंग बूट एप्लिकेशन में एक साथ उपयोग किया जा सकता है। हम एक सरल सेवा वर्ग बनाएंगे और JUnit और Mockito का उपयोग करके इसके लिए परीक्षण लिखेंगे।

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

@Service
public class UserService {

    private final UserRepository userRepository;

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

    public User getUserById(Long id) {
        return userRepository.findById(id)
                .orElseThrow(() -> new UserNotFoundException("User not found"));
    }
}

यहाँ, UserService UserRepository पर निर्भर करता है, जो एक स्प्रिंग डेटा JPA रिपॉजिटरी इंटरफ़ेस है। डेटाबेस को हिट किए बिना getUserByIdmethod का परीक्षण करने के लिए, हम UserRepository का नकल करने के लिए Mockito का उपयोग कर सकते हैं और UserService के व्यवहार पर जोर देने के लिए JUnit का उपयोग कर सकते हैं।

यहां बताया गया है कि हम उपयोगकर्ता सेवा के लिए एक परीक्षण कैसे लिख सकते हैं:

@SpringBootTest
public class UserServiceTest {

    @Mock
    private UserRepository userRepository;

    @InjectMocks
    private UserService userService;

    @BeforeEach
    public void setUp() {
        MockitoAnnotations.openMocks(this);
    }

    @Test
    public void testGetUserById_Success() {
        // Arrange
        User user = new User(1L, "John Doe", "[email protected]");
        when(userRepository.findById(1L)).thenReturn(Optional.of(user));

        // Act
        User result = userService.getUserById(1L);

        // Assert
        assertEquals("John Doe", result.getName());
        assertEquals("[email protected]", result.getEmail());
    }

    @Test
    public void testGetUserById_UserNotFound() {
        // Arrange
        when(userRepository.findById(1L)).thenReturn(Optional.empty());

        // Act & Assert
        assertThrows(UserNotFoundException.class, () -> userService.getUserById(1L));
    }
}

UserServiceTest क्लास में, हम UserRepository का एक मॉक इंस्टेंस बनाने के लिए @Mock एनोटेशन का उपयोग करते हैं और इस मॉक को UserService में इंजेक्ट करने के लिए @InjectMocks एनोटेशन का उपयोग करते हैं। सेटअप विधि प्रत्येक परीक्षण से पहले मॉक को प्रारंभ करती है।

फिर हम दो परीक्षणों को परिभाषित करते हैं:

testGetUserById_Success: यह परीक्षण सत्यापित करता है कि जब UserRepository द्वारा कोई उपयोगकर्ता पाया जाता है, तो UserService सही उपयोगकर्ता लौटाता है।
testGetUserById_UserNotFound: यह परीक्षण सुनिश्चित करता है कि जब UserRepository एक खाली परिणाम देता है, तो UserService एक UserNotFoundException फेंकता है।
ये परीक्षण हमें वास्तविक डेटाबेस पर भरोसा किए बिना उपयोगकर्ता सेवा के व्यवहार को मान्य करने की अनुमति देते हैं, जिससे वे तेज़ और अधिक विश्वसनीय हो जाते हैं।

स्प्रिंग बूट अनुप्रयोगों में जुनीट और मॉकिटो के साथ परीक्षणों को स्वचालित करना कोड गुणवत्ता और एप्लिकेशन स्थिरता सुनिश्चित करने का एक शक्तिशाली तरीका प्रदान करता है। व्यापक इकाई परीक्षण लिखकर, डेवलपर्स विकास प्रक्रिया की शुरुआत में ही बग पकड़ सकते हैं, जिससे कोड को रिफैक्टर करना और आत्मविश्वास के साथ नई सुविधाएँ जोड़ना आसान हो जाता है। जुनीट और मॉकिटो का संयोजन स्पष्ट, संक्षिप्त परीक्षणों की अनुमति देता है जो बाहरी निर्भरता की जटिलताओं से मुक्त होकर आपके एप्लिकेशन के व्यावसायिक तर्क पर ध्यान केंद्रित करते हैं।

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

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/matheusmartinello/automating-tests-in-spring-boot-with-junit-and-mockito-49ip?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3