Zoeken…


Syntaxis

  • @FixMethodOrder // Voert test uit met de standaardmethodesorteerder
  • @FixMethodOrder (MethodSorters) // Voert test uit met MethodSorter geassocieerd met het MethodSorters-totaal.

Standaard volgorde

Gebruik de annotatie - @FixMethodOrder(MethodSorters.DEFAULT) . Hiermee worden alle tests binnen de klasse uitgevoerd in een deterministische en enigszins voorspelbare volgorde. De implementatie hasht de methodenamen en vergelijkt ze. In het scenario van een gelijkspel sorteert het op lexicografische volgorde.

Codesegment hieronder Genomen uit 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);
}

Voorbeeld

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

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

Stel dat hashes voor testA , testB en testC respectievelijk 3, 2 en 1 zijn. Dan is de uitvoeringsorder

  1. testC
  2. testb
  3. testa

Stel dat hashes voor alle tests hetzelfde zijn. Aangezien alle hashes hetzelfde zijn, is de volgorde van uitvoering gebaseerd op de lexicografische volgorde. De uitvoeringsorder is

  1. testa
  2. testb
  3. testC

Lexicografische volgorde

Gebruik de annotatie @FixMethodOrder met de methode sorter MethodSorters.NAME_ASCENDING . Hiermee worden alle tests binnen de klasse uitgevoerd in een deterministische en voorspelbare volgorde. De implementatie vergelijkt de methodenamen en in het geval van een gelijkspel, vergelijkt het de methoden ' toString() .

Codesegment hieronder Genomen uit 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());
}

Voorbeeld

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

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

De uitvoeringsorder is

  1. testa
  2. testb
  3. testC


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow