junit
Ordre d'exécution du test
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
- testC
- testB
- 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
- testA
- testB
- 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
- testA
- testB
- testC