Ricerca…


Sintassi

  • @FixMethodOrder // Esegue il test utilizzando il sorter del metodo predefinito
  • @FixMethodOrder (MethodSorters) // Esegue il test utilizzando MethodSorter associato all'enumerazione MethodSorters.

Ordine predefinito

Utilizzare l'annotazione - @FixMethodOrder(MethodSorters.DEFAULT) . Questo esegue tutti i test all'interno della classe in un ordine deterministico e alquanto prevedibile. L'implementazione esegue il hashing dei nomi dei metodi e li confronta. Nello scenario di un pareggio, esso ordina secondo l'ordine lessicografico.

Segmento di codice di seguito preso da 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);
}

Esempio

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

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

Supponiamo che gli hash per testA , testB e testC siano rispettivamente 3, 2 e 1. Quindi l'ordine di esecuzione è

  1. TestC
  2. TestB
  3. TESTA

Supponiamo che gli hash per tutti i test siano gli stessi. Poiché tutti gli hash sono uguali, l'ordine di esecuzione è basato sull'ordine lessicografico. L'ordine di esecuzione è

  1. TESTA
  2. TestB
  3. TestC

Ordine lessicografico

Utilizzare l'annotazione @FixMethodOrder con il metodo sorter MethodSorters.NAME_ASCENDING . Questo eseguirà tutti i test all'interno della classe in un ordine deterministico e prevedibile. L'implementazione confronta i nomi dei metodi e, in caso di parità, confronta i metodi ' toString() .

Segmento di codice di seguito preso da 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());
}

Esempio

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

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

L'ordine di esecuzione è

  1. TESTA
  2. TestB
  3. TestC


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow