Parametryzacja testów
Powtarzalne testy
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.api.RepetitionInfo;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class RepeatedTestCase {
@RepeatedTest(5)
public void repeatedTest(RepetitionInfo repetitionInfo) {
int current = repetitionInfo.getCurrentRepetition();
int total = repetitionInfo.getTotalRepetitions();
System.out.println("Checking for the #" + current + " time out of " + total + " trials...");
assertTrue(true);
}
}
Źródła danych
Dzięki anotacji @ParameterizedTest dostępne są następujące źródła danych:
- @ValueSource
- @CSVFileSource
- @MethodSource
- @ArgumentsSource
- @EnumSource
Aby anotacja @ParameterizedTest była dostepna w classpath należy dodać nową zaleźność do projektu:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
Przykłady wykorzystania źródeł danych:
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvFileSource;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class DataDrivenTest {
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4, 5})
public void valueSourceTest(int argument) {
assertTrue(argument > 0);
}
@ParameterizedTest
@MethodSource(value = {"generatePositiveNumbers"})
public void methodSourceTest(int argument) {
assertTrue(argument > 0);
}
private static int[] generatePositiveNumbers() {
return new int[]{1, 2, 3, 4, 5};
}
@ParameterizedTest
@CsvFileSource(resources = {"/math_pow_test_data.csv"}, delimiter = ';')
public void csvFileSourceTest(int number, int expectedResult) {
assertEquals(expectedResult, Math.pow(number, 2));
}
}
Zadanie 1
Przepisać testy do klasy com.infoshareacademy.jjdd3.FahrenheitConverter tak by korzystały z pliku CSV.
Zadanie 2
Przepisać testy do klasy Calculator tak by korzystały z plików CSV (osobny dla każdej z metod).