7.1 @Suite एनोटेशन

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

टेस्ट को समूहों में जोड़ा जा सकता है। इसके लिए एक विशेष टीका है @Suite। उदाहरण:

@Suite
@SuiteDisplayName("JUnit Platform Suite Demo")
@SelectPackages("com.codegym.test")
@IncludeClassNamePatterns(".*Tests")
class SuiteDemo {
}

इस स्थिति में, @Suite एनोटेशन को अन्य एनोटेशन के साथ जोड़ा जाता है।

  • SuiteDisplayName- लॉग में परीक्षण समूह का नाम सेट करता है;
  • SelectPackages- उन संकुलों की सूची सेट करता है जहां परीक्षण कक्षाओं को देखना है;
  • IncludeClassNamePatterns- टेस्ट क्लास के नामों का पैटर्न सेट करता है।

ऐसी कठिनाइयाँ क्यों? अच्छी तरह से कल्पना करें कि परियोजना के सभी परीक्षण निष्पादित किए गए हैं, कहते हैं, 50 घंटे। और प्रत्येक कमिट के बाद उन्हें निष्पादित करना बहुत महंगा है। ऐसे मामले में, कुछ अलग परीक्षण स्क्रिप्ट बनाना और अधिक लचीले तरीके से परीक्षण स्थापित करना उपयोगी होता है।

7.2 @Order एनोटेशन

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

सबसे पहले, आप वर्णानुक्रम में बुलाए जाने वाले तरीकों को सेट कर सकते हैं :

@TestMethodOrder(MethodOrderer.MethodName.class)
public class AlphanumericOrderUnitTest {

}

दूसरे, प्रत्येक विधि में इसकी क्रमिक संख्या के साथ एक विशेष एनोटेशन हो सकता है।

@TestMethodOrder(OrderAnnotation.class)
public class OrderAnnotationUnitTest {

    @Test
    @Order(1)
    public void firstTest() {
    }

    @Test
    @Order(2)
    public void secondTest() {
    }
}

या एक अलग वर्ग भी बनाएं जो उस क्रम को निर्दिष्ट करेगा जिसमें परीक्षण कहा जाता है:

@TestMethodOrder(CustomOrder.class)
public class CustomOrderUnitTest {

}

//sort method names alphabetically, but ignoring case
public class CustomOrder implements MethodOrderer {
    public void orderMethods(MethodOrdererContext context) {
        context.getMethodDescriptors().sort(
        (MethodDescriptor m1, MethodDescriptor m2)->
           m1.getMethod().getName().compareToIgnoreCase(m2.getMethod().getName()));
    }
}

7.3 @DisplayName एनोटेशन

अंत में, प्रत्येक परीक्षण को एक नाम दिया जा सकता है। यदि बहुत सारे परीक्षण हैं और आप परीक्षणों के विशेष परिदृश्य (सबसेट) बनाते हैं तो यह सुविधाजनक हो सकता है। इसके लिए एक विशेष टीका है @DisplayName

उदाहरण:

@DisplayName("Friendly name for the test")
public class DisplayNameCustomTest {

    @Test
    @DisplayName("Input Validation")
    void inputData() {
    }

    @DisplayName("Checking critical situations")
    @Test
    void criticalCases() {
    }
}

जैसा कि परीक्षणों के क्रम को स्थापित करने के मामले में, यहां आप एक विशेष विधि बना सकते हैं जो परीक्षणों और परीक्षण विधियों के नाम उत्पन्न करेगी। उदाहरण:

@DisplayNameGeneration(DisplayNameGeneratorUnitTest.ReplaceCamelCase.class)
class DisplayNameGeneratorUnitTest {

    @Test
    void camelCaseName() {
    }

    static class ReplaceCamelCase extends DisplayNameGenerator.Standard {
        @Override
        public String generateDisplayNameForClass(Class testClass) {
            return super.generateDisplayNameForClass(testClass).toUpperCase();
        }
 }
}

देखें, यह कितना आसान है :)