पाठ 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 जाँचते हैं; यूनिट टेस्ट लॉजिक अलग करते हैं।