JUnit अभिकथन

उपलब्ध

6.1 दावा करता है

आवेषण विशेष जांच हैं जिन्हें कोड में विभिन्न स्थानों पर डाला जा सकता है। उनका कार्य यह निर्धारित करना है कि कुछ गलत हुआ। या बल्कि, यह जांचने के लिए कि सब कुछ वैसा ही चल रहा है जैसा उसे होना चाहिए। यह "आवश्यकतानुसार" है और वे आपको इसे विभिन्न तरीकों से सेट करने की अनुमति देते हैं।

उपरोक्त कोड में आप पहले ही कुछ अभिकथनों का सामना कर चुके हैं। पहला समानता के लिए वस्तुओं की जाँच कर रहा है। यदि वस्तुएँ समान नहीं हैं, तो एक अपवाद फेंका जाएगा और परीक्षण विफल हो जाएगा।

तुलना का क्रम यहां महत्वपूर्ण है , क्योंकि अंतिम रिपोर्ट में JUnit "मान 1 प्राप्त हुआ, लेकिन 3 अपेक्षित था" जैसा कुछ लिखेगा। ऐसे चेक का सामान्य प्रारूप है:

assertEquals(standard , meaning)

उदाहरण:

@Test
public void whenAssertingEquality () {
    String expected = "3.1415";
    String actual = "3";

    assertEquals(expected, actual);
}

6.2 विधियाँ

नीचे मैं सबसे लोकप्रिय तरीकों - अभिकथनों की सूची दूंगा। इनके नाम से अंदाजा लगाया जा सकता है कि ये कैसे काम करते हैं। लेकिन मैं वैसे भी एक संक्षिप्त विवरण लिखूंगा:

मुखर जाँचता है कि दो वस्तुएँ समान हैं
AssertArrayEquals जाँचता है कि क्या दो सरणियों में समान मान हैं
AssertNotNull जांचता है कि तर्क शून्य नहीं है या नहीं
astraNull जांचता है कि तर्क शून्य है या नहीं
AssertNotSame जांचें कि दो तर्क एक ही वस्तु नहीं हैं
जोर देना जांचें कि दो तर्क एक ही वस्तु हैं
astraTrue जाँचता है कि तर्क सत्य है या नहीं
AssertFalse जाँचता है कि क्या तर्क गलत है

इनमें से कुछ तरीके बेमानी लगते हैं। जब आप केवल assertTrue(a == b) लिख सकते हैं तो assertSame(a, b) का उपयोग क्यों करें ?

मुद्दा यह है कि जोर देना एक बहुत ही स्मार्ट तरीका है। यह लॉग में त्रुटि सूचना लिखने सहित कई उपयोगी चीजें करता है । पहले मामले में, यह लिखेंगे कि वस्तु A अपेक्षित थी, लेकिन वस्तु B प्राप्त हुई थी। दूसरे मामले में, यह बस लिखेंगे कि सच अपेक्षित था ।

जब आपके पास सैकड़ों परीक्षण हों, विशेष रूप से एक समर्पित परीक्षण सर्वर पर चलने वाले, तो विस्तृत लॉग होना अत्यधिक सहायक हो सकता है। मुझे लगता है कि आप समझते हैं कि मेरा क्या मतलब है।

सरणी तुलना उदाहरण:

@Test
public void whenAssertingArraysEquality() {
    char[] expected = {'J','u','n','i','t'};
    char[] actual = "Junit".toCharArray();

    assertArrayEquals(expected, actual);
}

6.3 मुखर विधि

जैसा कि ऊपर उल्लेख किया गया है, मुखर विधि न केवल एक चेक करती है, बल्कि लॉग में तुलनीय वस्तुओं के बारे में बहुत सारी जानकारी भी लिखती है।

आइए तुलना करते हैं:

Address address = unitUnderTest.methodUnderTest();
assertEquals("Washington", address.getCity());
assertEquals("Oracle Parkway", address.getStreet());
assertEquals("500", address.getNumber());

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

इसके लिए एक विशेष तरीका है - assertAll() । पहले तर्क के रूप में, यह लॉग में लिखे जाने के लिए एक टिप्पणी लेता है, और फिर किसी भी संख्या में मुखर कार्य करता है।

यहां बताया गया है कि हमारा उदाहरण इसके साथ कैसे लिखा जाएगा:

Address address = unitUnderTest.methodUnderTest();
assertAll("Complex address comparison script",
    () -> assertEquals("Washington", address.getCity()),
    () -> assertEquals("Oracle Parkway", address.getStreet()),
    () -> assertEquals("500", address.getNumber())
);

फिर अगर पता गलत है, तो लॉग में कुछ इस तरह लिखा जाएगा:

	Complex scenario comparison address (3 failures)
	expected: <Washington> but was: <Seattle>
    expected: <Oracle Parkway> but was: <Main Street>
    expected: <500> but was: <5772>

6.4 जोर टाइमआउट विधि

@ टाइमआउट एनोटेशन याद रखें ? इसने संपूर्ण विधि के निष्पादन समय को नियंत्रित करने की अनुमति दी। लेकिन कभी-कभी विधि के अंदर कोड के कुछ भाग के निष्पादन पर प्रतिबंध लगाना उपयोगी होता है। इसके लिए आप assertTimeout() का उपयोग कर सकते हैं ।

समय को पहले पैरामीटर के रूप में पारित किया जाता है, और निर्दिष्ट समय के भीतर निष्पादित होने वाले कोड (फ़ंक्शन) को दूसरे के रूप में पारित किया जाता है। उदाहरण:

@Test
public void whenAssertingTimeout() {
    assertTimeout(
  	ofSeconds(2),
  	() -> {
    	// pause for one second
    	Thread.sleep(1000);
  	}
	);
}

Assert क्लास में AssertTimeout() मेथड के 12 वेरिएंट हैं । यदि आप उनके बारे में अधिक जानना चाहते हैं, तो आधिकारिक दस्तावेज में आपका स्वागत है ।

6.5 जोर फेंको विधि

बहुत बार ऐसी परिस्थितियां होती हैं जब आपको यह सुनिश्चित करने की आवश्यकता होती है कि एक निश्चित स्थिति में कोड सही अपवाद फेंकता है: यह एक त्रुटि का पता लगाता है और सही अपवाद फेंकता है। यह बहुत ही सामान्य स्थिति है।

इस मामले में, एक और उपयोगी मुखर विधि है - यह है assertThrows() । इसके कॉल का सामान्य प्रारूप है:

assertThrows(exception , code)

असल में, यह assertTimeout() विधि के समान ही है , केवल यह जांचता है कि निर्दिष्ट कोड सही अपवाद फेंकता है। उदाहरण:

@Test
void whenAssertingException() {
    Throwable exception = assertThrows(
  	IllegalArgumentException.class,
  	() -> {
      	throw new IllegalArgumentException("Exception message");
  	}
    );
    assertEquals("Exception message", exception.getMessage());
}
टिप्पणियां
  • लोकप्रिय
  • नया
  • पुराना
टिप्पणी लिखने के लिए आपको साइन इन करना होगा
इस पेज पर अभी तक कोई टिप्पणियां नहीं हैं