Как запускать автотесты по порядку java

Аватар пользователя Сергей Якимович
Сергей Якимович
07 декабря 2022

Java по умолчанию не гарантирует порядок выполнения тестов. Поэтому рекомендуется делать независимые друг от друга тесты.

Начиная с JUnit 4.11, обеспечить порядок выполнения тестов можно с помощью аннотации @FixMethodOrder.

В качестве параметра в аннотацию можно передать константу из Enum MethodSorters:

DEFAULT - порядок по умолчанию, основанный на hashcode.

JVM - порядок обеспечиваемый JVM, может меняться от запуска к запуску.

NAME_ASCENDING - порядок по возрастанию имени метода.

Пример запуска тестов в порядке названия тестовых методов :

import org.junit.runners.MethodSorters;
import org.junit.FixMethodOrder;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
class AppTest {

    @Test
    void test1() {
        // ...
    }

    @Test
    void test2() {
        // ...
    }
}

Кроме того, мы можем протестировать один метод на заданных по порядку входных значениях с помощью параметрических тестов :

class AppTest {
    @ParameterizedTest
    @CsvSource({
            "3, 2, 5, 2",
            "30, 20, 10, 10",
            "1, 12, 7, 1"
    })
    void testMinOfNumbers(int a, int b, int c, int expected) {
        int result = NumberUtils.minOfNumbers(a, b, c);
        assertThat(expected).isEqualTo(result);
    }
}

public class NumberUtils {
    public static int minOfNumbers(int a, int b, int c) {
        int[] arr = {a,b,c};
        Arrays.sort(arr);
        return arr[0];
    }
}
1 0