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).

results matching ""

    No results matching ""