junit
Orden de ejecución de prueba
Buscar..
Sintaxis
- @FixMethodOrder // Ejecuta la prueba utilizando el clasificador de métodos predeterminado
- @FixMethodOrder (MethodSorters) // Ejecuta la prueba utilizando MethodSorter asociado con la enumeración de los MethodSorters.
Orden por defecto
Utilice la anotación - @FixMethodOrder(MethodSorters.DEFAULT)
. Esto ejecuta todas las pruebas dentro de la clase en un orden determinista y algo predecible. La implementación contiene los nombres de los métodos y los compara. En el escenario de un empate, se ordena por orden lexicográfico.
Segmento de código a continuación tomado 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);
}
Ejemplo
@FixMethodOrder(MethodSorters.DEFAULT)
public class OrderedTest {
@Test
public void testA() {}
@Test
public void testB() {}
@Test
public void testC() {}
}
Supongamos que los hashes para testA
, testB
y testC
son 3, 2 y 1 respectivamente. Entonces la orden de ejecución es
- testC
- testB
- testA
Supongamos que los hashes para todas las pruebas son iguales. Dado que todos los hashes son iguales, el orden de ejecución se basa en un orden lexicográfico. La orden de ejecución es
- testA
- testB
- testC
Orden lexicografico
Utilice la anotación @FixMethodOrder
con el clasificador de métodos MethodSorters.NAME_ASCENDING
. Esto ejecutará todas las pruebas dentro de la clase en un orden determinista y predecible. La implementación compara los nombres de los métodos y, en el caso de un empate, compara los métodos ' toString()
.
Segmento de código a continuación tomado 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());
}
Ejemplo
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OrderedTest {
@Test
public void testA() {}
@Test
public void testB() {}
@Test
public void testC() {}
}
La orden de ejecución es
- testA
- testB
- testC