Как запускать автотесты по порядку 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