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
}
GO TO FULL VERSION