JUnit के साथ यूनिट टेस्टिंग

Java में Testing परिचय

Maria Milusheva

Senior Software Engineer

Unit testing - परिभाषा

दो मुख्य अवधारणाएँ:

Unit - किसी एप्लिकेशन का सबसे छोटा टेस्ट करने योग्य भाग, जैसे कोई method

Unit testing - ऐसा टेस्ट जो एप्लिकेशन के बाकी हिस्सों से अलग, कोड की एक ही "unit" की शुद्धता जाँचे

Java में Testing परिचय

Unit testing विवरणों पर केंद्रित है

नोट्स:

  • Unit testing छोटे-छोटे logic भागों पर केंद्रित होता है, न कि बड़े परिदृश्य पर

  • अन्य टेस्टिंग प्रकार बड़े परिदृश्य पर ध्यान देते हैं (जैसे integration)

  • JUnit का नाम इसलिए है क्योंकि इसका मुख्य उपयोग unit testing है

यूनिट टेस्ट और प्रोडक्शन कोड के संबंध को सहज रूप से दर्शाता ग्राफिक

Java में Testing परिचय

Testing के प्रकार - संक्षिप्त परिचय

  • इस कोर्स में हम मुख्यतः unit और integration tests पर बात करेंगे
  • लेकिन टेस्टिंग के कई प्रकार हैं!

सॉफ्टवेयर टेस्ट का आरेख: functional (जैसे unit testing) और non-functional (जैसे usability testing)

Java में Testing परिचय

Testing के प्रकार - संक्षिप्त परिचय

  • इस कोर्स में हम मुख्यतः unit और integration tests पर बात करेंगे
  • लेकिन टेस्टिंग के कई प्रकार हैं!

सॉफ्टवेयर टेस्ट का आरेख: functional (जैसे unit testing) और non-functional (जैसे usability testing). इस संस्करण में unit और integration testing को घेरा गया है

Java में Testing परिचय

JUnit सिंटैक्स: assertTrue() और assertFalse()

  • assertTrue() जाँचता है कि कथन true है:
List<String> list = new ArrayList<>();

assertTrue(list.isEmpty()); // No error
  • assertFalse() उल्टा जाँचता है:
List<String> list = new ArrayList<>();
list.add("A");

assertFalse(list.isEmpty()); // No error
Java में Testing परिचय

assertNull() और assertNotNull()

null वैरिएबल NullPointerException दे सकते हैं!

  • null है या नहीं, यह जाँचने के लिए assertions - assertNull() और assertNotNull()

  • आम उपयोग: कहीं से मिला मान null नहीं है, यह जाँचना

Map<String, Integer> catalogue = new HashMap<>();

catalogue.put("item1", 10);

// No errors
assertNotNull(catalogue.get("item1"));
assertNull(catalogue.get("item2"));
Java में Testing परिचय

Exceptions पर assertion

मान लीजिए हम जाँचना चाहते हैं कि ArrayIndexOutOfBoundsException थ्रो होती है:

public String getIndex(String[] array, int index) {
    return array[index];
}

JUnit इसे करने के कई तरीके देता है!

Java में Testing परिचय

assertInstanceOf()

  • JUnit assertThrows() देता है, पर इसमें advanced Java सिंटैक्स (lambda expressions) लगती है

  • आप assertInstanceOf() ऐसे उपयोग कर सकते हैं:

try {
    getIndex(new String[]{}, 4);
} catch (Exception e) {
    // अपेक्षित exception की class और actual exception पास करें  
    assertInstanceOf(ArrayIndexOutOfBoundsException.class, e); 
}
1 https://www.baeldung.com/junit-assert-exception
Java में Testing परिचय

Unit tests का नामकरण

  • एक सामान्य प्रोजेक्ट में सैकड़ों unit tests होते हैं

  • ये हल्के और आसानी से समझ आने वाले होने चाहिए

  • इनके नाम जानकारीपूर्ण हों ताकि किसी के फेल होने पर तुरंत समझ आए कि क्या गलत हुआ

उदाहरण: methodUnderTest_expectedBehavior_conditions()

1 https://dzone.com/articles/7-popular-unit-test-naming?fromrel=true
Java में Testing परिचय

अभ्यास करते हैं!

Java में Testing परिचय

Preparing Video For Download...