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
}

కానీ మైనస్ కూడా ఉంది - ఈ ఉల్లేఖనం శూన్యానికి మద్దతు ఇవ్వదు, కాబట్టి మీరు దాని కోసం ప్రత్యేక క్రచ్‌ని ఉపయోగించాలి - @NullSource . ఇది ఇలా కనిపిస్తుంది:

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

5.3 @EnumSource ఉల్లేఖన

@EnumSource అనే ప్రత్యేక ఉల్లేఖనం కూడా ఉంది , ఇది నిర్దిష్ట Enum యొక్క అన్ని విలువలను పద్ధతికి పంపుతుంది. దీని అప్లికేషన్ ఇలా కనిపిస్తుంది:

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
}