5.1 @ParameterizedTest भाष्य

काहीवेळा तुम्हाला वेगवेगळ्या पॅरामीटर्ससह अनेक वेळा चाचणी कॉल करायची आहे: भिन्न मूल्ये, भिन्न इनपुट पॅरामीटर्स, भिन्न वापरकर्तानावे. JUnit चे उद्दिष्ट तुमचे जीवन सोपे करणे आहे, म्हणून या प्रकरणात पॅरामीटराइज्ड चाचण्यांसारखी गोष्ट आहे.

पॅरामीटराइज्ड चाचण्या वापरण्यासाठी, तुम्हाला तुमच्यामध्ये आणखी एक अवलंबित्व जोडण्याची आवश्यकता आहे pom.xml:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-params</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>

मग आपण एक उदाहरण विचारात घेऊ शकतो:

@ParameterizedTest
@ValueSource(ints = { 1, 2, 3 })
void testMethod(int argument) {
    //test code
}

@ParameterizedTest
@ValueSource(ints = { 1, 2, 3 })
void testMethodWithAutoboxing(Integer argument) {
    //test code
}

प्रत्येक चाचणी पद्धतीला 3 वेळा कॉल केले जाईल, आणि प्रत्येक वेळी कॉल केल्यावर, दुसरा पॅरामीटर पास केला जाईल. मूल्ये दुसरी भाष्य वापरून सेट केली जातात - @ValueSource . पण त्याबद्दल अधिक सांगण्याची गरज आहे.

5.2 @ValueSource भाष्य

@ValueSource भाष्य आदिम आणि शब्दशः सह कार्य करण्यासाठी उत्तम आहे. फक्त स्वल्पविरामाने विभक्त केलेल्या पॅरामीटर मूल्यांची यादी करा आणि प्रत्येक मूल्यासाठी एकदा चाचणी कॉल केली जाईल.

@ParameterizedTest
@ValueSource(ints = { 1, 2, 3 })
void testMethodWithAutoboxing(Integer argument) {
    //test code
}

पण एक वजा देखील आहे - हे भाष्य null ला समर्थन देत नाही, म्हणून तुम्हाला त्यासाठी एक विशेष क्रॅच वापरण्याची आवश्यकता असेल - @NullSource . हे असे दिसते:

@ParameterizedTest
@NullSource
void testMethodNullSource(Integer argument) {
    assertTrue(argument == null);
}

5.3 @EnumSource भाष्य

@EnumSource एक विशेष भाष्य देखील आहे , जे विशिष्ट एनमची सर्व मूल्ये पद्धतीमध्ये पास करते. त्याचा अनुप्रयोग असे दिसते:

enum Direction {
    EAST, WEST, NORTH, SOUTH
}

@ParameterizedTest
@EnumSource(Direction.class)
void testWithEnumSource(Direction d) {
    assertNotNull(d);
}

5.4 @MethodSource भाष्य

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

उदाहरण:

@ParameterizedTest
@MethodSource("argsProviderFactory")
void testWithMethodSource(String argument) {
    assertNotNull(argument);
}

static Stream<String> argsProviderFactory() {
    return Stream.of("one", "two",  "three");
}

एकाधिक वितर्कांसह पॅरामीटराइज्ड चाचण्या

अर्थात, आपण या पद्धतीमध्ये अनेक पॅरामीटर्स पास करू इच्छित असल्यास काय करावे याबद्दल आपण आधीच विचार केला आहे. यासाठी खूप छान @CSVSource भाष्य आहे . हे तुम्हाला स्वल्पविरामाने विभक्त केलेल्या पद्धती पॅरामीटर्सची मूल्ये सूचीबद्ध करण्यास अनुमती देते.

उदाहरण:

@ParameterizedTest
@CsvSource({
    "alex, 30, Programmer, Working",
    "brian, 35, Tester, Working",
	"charles, 40, manager, kicks"
})
void testWithCsvSource(String name, int age, String occupation, String status) {
	//method code
}