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

  1. testC
  2. testB
  3. 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

  1. testA
  2. testB
  3. 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

  1. testA
  2. testB
  3. testC


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow