इकाई परीक्षण में, के बीच मतभेद रहे हैं @Runwith(SpringRunner.class)
और @SpringBootTest
?
क्या आप मुझे हर एक के उपयोग के मामले समझा सकते हैं?
इकाई परीक्षण में, के बीच मतभेद रहे हैं @Runwith(SpringRunner.class)
और @SpringBootTest
?
क्या आप मुझे हर एक के उपयोग के मामले समझा सकते हैं?
जवाबों:
@RunWith (SpringRunner.class): आप यह व्याख्या की जरूरत है सिर्फ सक्षम करने के लिए वसंत बूट की तरह की सुविधा है @Autowire
, @MockBean
आदि .. JUnit परीक्षण के दौरान
स्प्रिंग बूट परीक्षण सुविधाओं और JUnit के बीच एक पुल प्रदान करने के लिए उपयोग किया जाता है। जब भी हम अपने JUnit परीक्षणों में किसी भी स्प्रिंग बूट परीक्षण सुविधाओं का उपयोग कर रहे हैं, तो इस एनोटेशन की आवश्यकता होगी।
@SpringBootTest: इस एनोटेशन का उपयोग एंड-टू-एंड इंटीग्रेशन टेस्टिंग के लिए पूर्ण एप्लिकेशन संदर्भ को लोड करने के लिए किया जाता है
जब हम पूरे कंटेनर को बूटस्ट्रैप करना चाहते हैं तो @SpringBootTest एनोटेशन का उपयोग किया जा सकता है। एनोटेशन ApplicationContext बनाकर काम करता है जो हमारे परीक्षणों में उपयोग किया जाएगा।
यहाँ दोनों परिदृश्य Baeldung पर स्पष्ट उदाहरण के साथ लेख है
से spring.io :
@RunWith(SpringRunner.class)
स्प्रिंग के परीक्षण समर्थन का उपयोग करके चलाने के लिए ज्यूनिट को बताता है।SpringRunner
के लिए नया नाम हैSpringJUnit4ClassRunner
, यह आंख पर थोड़ा आसान है।
@SpringBootTest
कह रही है "स्प्रिंग बूट के समर्थन के साथ बूटस्ट्रैप" (उदाहरण के लिए लोड करेंapplication.properties
और मुझे सभी स्प्रिंग बूट अच्छाई दें)
इसलिए यदि आपको अपने एकीकरण परीक्षण के लिए स्प्रिंग बूट लोड की आवश्यकता नहीं है, तो आपको आवश्यकता नहीं है @SpringBootTest
@RunWith टेस्ट रनर्स का उपयोग करने के लिए JUnit 4 से एक पुराना एनोटेशन है। यदि आप JUnit 5 (बृहस्पति) का उपयोग कर रहे हैं, तो आपको JUnit एक्सटेंशन का उपयोग करने के लिए @ExtendWith का उपयोग करना चाहिए
Https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing देखें
"यदि आप JUnit 4 का उपयोग कर रहे हैं, तो अपने टेस्ट में @RunWith (स्प्रिंगरनर.क्लास) भी जोड़ना न भूलें, अन्यथा एनोटेशन को नजरअंदाज कर दिया जाएगा। यदि आप JUnit 5 का उपयोग कर रहे हैं, तो समकक्ष @ExtendWith को जोड़ने की कोई आवश्यकता नहीं है। SpringExtension.class) @SpringBootTest के रूप में और अन्य @ ... टेस्ट एनोटेशन इसके साथ पहले से ही एनोटेट हैं।