पाठ 22 / 38
JUnit 5 व Mockito
JUnit 5 अभिकथन व parameterized टेस्ट से यूनिट टेस्ट लिखें, और Mockito से सहयोगियों को stub कर जाँची जा रही क्लास को अलग करें।
एक JUnit 5 टेस्ट
@Test मेथड assertEquals, assertThrows उपयोग करते हैं। Mockito स्टब सहयोगी बनाता है ताकि इकाई अलग से जाँची जाए।
@Test
void appliesDiscount() {
PriceService svc = new PriceService(rules);
assertEquals(90, svc.total(100, "SAVE10"));
}
@Test
void rejectsUnknownCode() {
when(rules.lookup("X")).thenReturn(Optional.empty());
assertThrows(BadCode.class, () -> svc.total(100, "X"));
}टेस्ट डिज़ाइन जाँच
त्वरित जाँच: यूनिट टेस्ट में असली डेटाबेस कॉल की जगह मॉक क्यों?
- मॉक हमेशा असली से अधिक सटीक होते हैं
- टेस्ट तेज़, नियतात्मक और एक इकाई पर केंद्रित रखने के लिए
- क्योंकि JUnit बाहरी कोड कॉल नहीं कर सकता
- अभिकथन लिखने से बचने के लिए
Answer
टेस्ट तेज़, नियतात्मक और एक इकाई पर केंद्रित रखने के लिए — इंटीग्रेशन टेस्ट असली DB जाँचते हैं; यूनिट टेस्ट लॉजिक अलग करते हैं।