४.१ @अक्षम

आता JUnit फ्रेमवर्कची काही अतिशय उपयुक्त आणि लोकप्रिय भाष्ये पाहू. प्रथम भाष्य आपल्याला विशिष्ट चाचणी बंद करण्याची परवानगी देते जेणेकरून JUnit त्याला कॉल करणार नाही. चाचणी योग्यरित्या कार्य करत नसल्याचे तुमच्या लक्षात येते किंवा तुम्ही कोड बदलला आणि चाचणी चुकून खंडित झाली असेल अशा प्रकरणांमध्ये हे आवश्यक आहे.

मी आधी लिहिल्याप्रमाणे, 99% चाचण्या कोणीही समर्थित नाहीत, म्हणून त्या सर्व लवकर किंवा नंतर अक्षम होतील. म्हणून, हे भाष्य उपयुक्तांच्या यादीत पहिले आहे.

तिचे उदाहरण विचारात घ्या:

public class AppTest {

    @Disabled("Test is temporarily disabled. True, true")
    @Test
    void testOnDev(){
        System.setProperty("ENV", "DEV");
        Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
    }

    @Test
    void testOnProd(){
     System.setProperty("ENV", "PROD");
        Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
    }
}

वरील उदाहरणात, पद्धत testOnDev()म्हटले जाणार नाही. तसे, @Disabledक्लास डिक्लेरेशनच्या आधी भाष्य लिहीले जाऊ शकते, नंतर त्याच्या सर्व पद्धतींकडे दुर्लक्ष केले जाईल.

@Disabled("Temporarily turned off the test, we will fix it by May 2001")
public class AppTest {
    @Test
    void testOnDev(){
        System.setProperty("ENV", "DEV");
        Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
    }

    @Test
    void testOnProd(){
     System.setProperty("ENV", "PROD");
        Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
    }
}

४.२ @नेस्टेड

JUnit तुम्हाला नेस्टेड क्लासेसवर चाचणी पद्धती कॉल करण्याची परवानगी देते. म्हणजे नेस्टेड टेस्ट क्लासेस. हे तथ्य नाही की आपण अनेकदा त्यांच्याशी सामना कराल, परंतु अशी शक्यता आहे, म्हणून आपल्याला ते काय आहे हे समजून घेणे आवश्यक आहे.

नेस्टेड क्लासच्या पद्धतींना त्याच्या घोषणेपूर्वी कॉल करण्यासाठी, तुम्हाला भाष्य लिहावे लागेल @Nested. उदाहरण:

public class AppTest {
    @Nested
    public class DevStagingEnvironment {
    @Test
        void testOnDev(){
            System.setProperty("ENV", "DEV");
            Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
        }
   }

    @Nested
    public class ProductionEnvironment {
        @Test
        void testOnProd(){
           System.setProperty("ENV", "PROD");
           Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
        }
   }
}

अधिक तपशील अधिकृत कागदपत्रांमध्ये आढळू शकतात .

४.३ @ExtendWith

आणखी एक उपयुक्त भाष्य आहे @ExtendWith. बहुधा आपण तिला बर्‍याचदा भेटाल, म्हणून तिच्याकडे अधिक तपशीलवार पाहूया.

JUnit हे एक शक्तिशाली फ्रेमवर्क आहे जे तुम्हाला तुमच्या कामाच्या लवचिक कस्टमायझेशनसाठी विविध प्लगइन (विस्तार) लिहिण्याची परवानगी देते. काही विस्तार चाचण्यांबद्दल आकडेवारी गोळा करू शकतात, काही इन-मेमरी फाइल सिस्टीमचे अनुकरण करू शकतात, इतर वेब सर्व्हरमध्ये काम करण्याचे अनुकरण करू शकतात, इत्यादी.

जर तुमचा कोड फ्रेमवर्कमध्ये चालू असेल (उदाहरणार्थ, स्प्रिंग), तर जवळजवळ नेहमीच हे फ्रेमवर्क तुमच्या कोडमधील ऑब्जेक्ट्सची निर्मिती आणि कॉन्फिगरेशन व्यवस्थापित करते . म्हणून, एक विशेष चाचणी प्लगइन अपरिहार्य आहे. उदाहरणे:

उदाहरण 1. योग्यरितीने कार्य करण्‍यासाठी एक्स्टेंशन WebServerExtensionनावाच्या चाचणी पद्धतीकडे जातो .URL

@Test
@ExtendWith(WebServerExtension.class)
void getProductList(@WebServerUrl String serverUrl) {
    WebClient webClient = new WebClient();
    // Use WebClient to connect to web server using serverUrl and verify response
    assertEquals(200, webClient.get(serverUrl + "/products").getResponseStatus());
}

अशाप्रकारे चाचण्या सहसा स्प्रिंग फ्रेमवर्कसह कार्य करणार्‍या कोडची चाचणी घेण्यास प्रारंभ करतात:

@ExtendWith(SpringExtension.class)
@ExtendWith(MockitoExtension.class)
class TestServiceTest {

    @MockBean
    TestService service;

    @Test
    void test() {
        assertNotNull(service); // Test succeeds
    }
}

SpringExtensionस्प्रिंग फ्रेमवर्कची चाचणी आवृत्ती तयार करते, परंतु MockitoExtentionतुम्हाला बनावट वस्तू तयार करण्यास अनुमती देते. बनावट वस्तू हा एक अतिशय मनोरंजक विषय आहे, आम्ही त्यावर नक्कीच स्पर्श करू, परंतु थोड्या वेळाने.

४.४ @टाइमआउट

हे व्याख्यान एका छोट्या आणि मनोरंजक भाष्याने पूर्ण करूया @Timeout. हे तुम्हाला चाचणी चालवण्यासाठी वेळ सेट करण्याची परवानगी देते. जर चाचणीला भाष्यात नमूद केलेल्यापेक्षा जास्त वेळ लागला असेल, तर ती अयशस्वी मानली जाते.

class TimeoutDemo {
    @Test
    @Timeout(value = 100, unit = TimeUnit.MILLISECONDS)
    void failsIfExecutionTimeExceeds100Milliseconds() {
        // test will fail if it takes more than 100 milliseconds
    }
}

याने आमच्या व्याख्यानाचा समारोप होतो.