junit
Порядок выполнения тестирования
Поиск…
Синтаксис
- @FixMethodOrder // запускает тест с использованием сортировщика по умолчанию
- @FixMethodOrder (MethodSorters) // запускает тест с использованием метода MethodSorter, связанного с перечислением MethodSorters.
Заказ по умолчанию
Используйте аннотацию - @FixMethodOrder(MethodSorters.DEFAULT)
. Это выполняет все тесты внутри класса в детерминированном и несколько предсказуемом порядке. Реализация хеширует имена методов и сравнивает их. В сценарии галстука он сортируется по лексикографическому порядку.
Сегмент кода ниже, взятый из JUnit Github - MethodSorter.java
public int compare(Method m1, Method m2) {
int i1 = m1.getName().hashCode();
int i2 = m2.getName().hashCode();
if(i1 != i2) {
return i1 < i2 ? -1 : 1;
}
return NAME_ASCENDING.compare(m1,m2);
}
пример
@FixMethodOrder(MethodSorters.DEFAULT)
public class OrderedTest {
@Test
public void testA() {}
@Test
public void testB() {}
@Test
public void testC() {}
}
Предположим, что хеши для testA
, testB
и testC
равны 3, 2 и 1 соответственно. Тогда порядок выполнения
- testC
- testB
- панцирь
Предположим, что хэши для всех тестов одинаковы. Поскольку все хэши одинаковы, порядок выполнения основан на лексикографическом порядке. Порядок выполнения
- панцирь
- testB
- testC
Лексикографический заказ
Используйте аннотацию @FixMethodOrder
с помощью сортировщика MethodSorters.NAME_ASCENDING
. Это проведет все тесты внутри класса в детерминированном и предсказуемом порядке. Реализация сравнивает имена методов, а в случае привязки сравнивает методы toString()
.
Сегмент кода ниже, взятый из JUnit Github - MethodSorter.java
public int compare(Method m1, Method m2) {
final int comparison = m1.getName().compareTo(m2.getName());
if(comparison != 0) {
return comparison;
}
return m1.toString().compareTo(m2.toString());
}
пример
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OrderedTest {
@Test
public void testA() {}
@Test
public void testB() {}
@Test
public void testC() {}
}
Порядок выполнения
- панцирь
- testB
- testC