Поиск…


Синтаксис

  • @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 соответственно. Тогда порядок выполнения

  1. testC
  2. testB
  3. панцирь

Предположим, что хэши для всех тестов одинаковы. Поскольку все хэши одинаковы, порядок выполнения основан на лексикографическом порядке. Порядок выполнения

  1. панцирь
  2. testB
  3. 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() {}
}

Порядок выполнения

  1. панцирь
  2. testB
  3. testC


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow