Recherche…


Syntaxe

  • @FixMethodOrder // Exécute le test en utilisant le trieur de méthode par défaut
  • @FixMethodOrder (MethodSorters) // Exécute le test en utilisant MethodSorter associé à l'énumération MethodSorters.

Ordre par défaut

Utilisez l'annotation - @FixMethodOrder(MethodSorters.DEFAULT) . Cela exécute tous les tests dans la classe dans un ordre déterministe et quelque peu prévisible. L'implémentation hache les noms de méthode et les compare. Dans le cas d'une cravate, il trie par ordre lexicographique.

Segment de code ci-dessous tiré de 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);
}

Exemple

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

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

Supposons que les hachages pour testA , testB et testC soient respectivement 3, 2 et 1. Ensuite, l'ordre d'exécution est

  1. testC
  2. testB
  3. testA

Supposons que les hachages pour tous les tests soient les mêmes. Comme tous les hachages sont identiques, l'ordre d'exécution est basé sur l'ordre lexicographique. L'ordre d'exécution est

  1. testA
  2. testB
  3. testC

Ordre Lexicographique

Utilisez l'annotation @FixMethodOrder avec la méthode MethodSorters.NAME_ASCENDING . Cela exécutera tous les tests de la classe dans un ordre déterministe et prévisible. L'implémentation compare les noms de méthode et, en cas d'égalité, compare les méthodes ' toString() .

Segment de code ci-dessous tiré de 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());
}

Exemple

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

    @Test
    public void testB() {}

    @Test
    public void testC() {}
}

L'ordre d'exécution est

  1. testA
  2. testB
  3. testC


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow