Suche…


Syntax

  • @FixMethodOrder // Führt den Test mit dem Standardmethoden-Sortierer aus
  • @FixMethodOrder (MethodSorters) // Führt den Test mit MethodSorter aus, der der MethodSorters-Enum zugeordnet ist.

Standardreihenfolge

Verwenden Sie die Annotation - @FixMethodOrder(MethodSorters.DEFAULT) . Dadurch werden alle Tests in der Klasse in einer deterministischen und etwas vorhersagbaren Reihenfolge ausgeführt. Die Implementierung hasch die Methodennamen und vergleicht sie. Im Szenario einer Krawatte wird nach lexikografischer Reihenfolge sortiert.

Aus JUnit Github entnommenes Codesegment - 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);
}

Beispiel

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

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

Angenommen Hashes für testA , testB und testC sind 3, 2 und 1 sind. Dann ist die Ausführungsreihenfolge

  1. testC
  2. testB
  3. testA

Angenommen, die Hashwerte für alle Tests sind gleich. Da alle Hashes gleich sind, basiert die Ausführungsreihenfolge auf der lexikografischen Reihenfolge. Die Ausführungsreihenfolge ist

  1. testA
  2. testB
  3. testC

Lexikographische Reihenfolge

Verwenden Sie die Annotation @FixMethodOrder mit dem Methodensortierer MethodSorters.NAME_ASCENDING . Dadurch werden alle Tests innerhalb der Klasse in einer deterministischen und vorhersagbaren Reihenfolge ausgeführt. Die Implementierung vergleicht die Methodennamen und im Falle eines Gleichstands vergleicht sie die Methoden toString() .

Aus JUnit Github entnommenes Codesegment - 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());
}

Beispiel

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

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

Die Ausführungsreihenfolge ist

  1. testA
  2. testB
  3. testC


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow