Szukaj…


Składnia

  • @FixMethodOrder // Uruchamia test przy użyciu domyślnego sortera metod
  • @FixMethodOrder (MethodSorters) // Uruchamia test przy użyciu MethodSorter powiązanego z wyliczeniem MethodSorters.

Domyślne zamówienie

Użyj adnotacji - @FixMethodOrder(MethodSorters.DEFAULT) . To uruchamia wszystkie testy w klasie w deterministycznej i dość przewidywalnej kolejności. Implementacja haszy nazwy metod i porównuje je. W przypadku remisu sortuje się według kolejności leksykograficznej.

Poniższy segment kodu pochodzi z 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);
}

Przykład

@FixMethodOrder(MethodSorters.DEFAULT)
public class OrderedTest {
    @Test
    public void testA() {}

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

Załóżmy, że skróty dla testA , testB i testC wynoszą odpowiednio 3, 2 i 1. Zatem kolejność wykonania jest

  1. testC
  2. testB
  3. test A.

Załóżmy, że skróty dla wszystkich testów są takie same. Ponieważ wszystkie skróty są takie same, kolejność wykonywania jest oparta na kolejności leksykograficznej. Kolejność wykonania jest

  1. test A.
  2. testB
  3. testC

Porządek leksykograficzny

Użyj adnotacji @FixMethodOrder w sortowniku metod MethodSorters.NAME_ASCENDING . Spowoduje to uruchomienie wszystkich testów w klasie w deterministycznej i przewidywalnej kolejności. Implementacja porównuje nazwy metod, aw przypadku remisu porównuje metody z toString() .

Poniższy segment kodu pochodzi z 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());
}

Przykład

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OrderedTest {
    @Test
    public void testA() {}

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

Kolejność wykonania jest

  1. test A.
  2. testB
  3. testC


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow