Saltar al contenido

¿Cómo ejecutar métodos de prueba en un orden específico en JUnit4?

Te traemos el resultado a esta pregunta, o por lo menos eso deseamos. Si continuas con alguna interrogante dínoslo y con placer te responderemos

Solución:

Creo que es una función bastante importante para JUnit, si el autor de JUnit no quiere la función de orden, ¿por qué?

No estoy seguro de que haya una manera limpia de hacer esto con JUnit, que yo sepa, JUnit asume que todas las pruebas se pueden realizar en un orden arbitrario. De las preguntas frecuentes:

¿Cómo uso un accesorio de prueba?

(…) El orden de las invocaciones de métodos de prueba es no garantizado, por lo que testOneItemCollection() podría ejecutarse antes que testEmptyCollection(). (…)

¿Por que es esto entonces? Pues yo creo que haciendo pruebas dependiente del pedido es una práctica que los autores no quieren promover. Las pruebas deben ser independientes, no deben estar acopladas y violar esto será dificultará el mantenimiento de las cosas, romperá la capacidad de ejecutar pruebas individualmente (obviamente), etc.

Dicho esto, si realmente quiere ir en esta dirección, considere usar TestNG ya que admite la ejecución de métodos de prueba en cualquier orden arbitrario de forma nativa (y cosas como especificar que los métodos dependen de grupos de métodos). Cedric Beust explica cómo hacer esto en el orden de ejecución de las pruebas en testng.

Si se deshace de su instancia existente de Junit y descarga JUnit 4.11 o superior en la ruta de compilación, el siguiente código ejecutará los métodos de prueba en el orden de sus nombres, ordenados en orden ascendente:

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class SampleTest 

    @Test
    public void testAcreate() 
        System.out.println("first");
    
    @Test
    public void testBupdate() 
        System.out.println("second");
    
    @Test
    public void testCdelete() 
        System.out.println("third");
    

Si el pedido es importante, debe realizar el pedido usted mismo.

@Test public void test1()  ... 
@Test public void test2()  test1(); ... 

En particular, debe enumerar algunas o todas las permutaciones de orden posibles para probar, si es necesario.

Por ejemplo,

void test1(); 
void test2(); 
void test3(); 


@Test
public void testOrder1()  test1(); test3(); 

@Test(expected = Exception.class)
public void testOrder2()  test2(); test3(); test1(); 

@Test(expected = NullPointerException.class)
public void testOrder3()  test3(); test1(); test2(); 

O, una prueba completa de todas las permutaciones:

@Test
public void testAllOrders() 
    for (Object[] sample: permute(1, 2, 3)) 
        for (Object index: sample) 
            switch (((Integer) index).intValue()) 
                case 1: test1(); break; 
                case 2: test2(); break; 
                case 3: test3(); break; 
            
        
    

Aquí, permute() es una función simple que itera todas las permutaciones posibles en una colección de array.

Si estás de acuerdo, puedes dejar una división acerca de qué le añadirías a este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *