5.1 @Parameterized Test annotation

சில நேரங்களில் நீங்கள் வெவ்வேறு அளவுருக்கள் மூலம் சோதனையை பல முறை அழைக்க வேண்டும்: வெவ்வேறு மதிப்புகள், வெவ்வேறு உள்ளீட்டு அளவுருக்கள், வெவ்வேறு பயனர்பெயர்கள். ஜூனிட் உங்கள் வாழ்க்கையை எளிதாக்குவதை நோக்கமாகக் கொண்டுள்ளது, எனவே இது அளவுரு சோதனைகள் போன்ற ஒரு விஷயத்தைக் கொண்டுள்ளது.

அளவுருவாக்கப்பட்ட சோதனைகளைப் பயன்படுத்த, நீங்கள் இன்னும் ஒரு சார்புநிலையைச் சேர்க்க வேண்டும் 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
}