pruebas de baño junit, en fases: Todo @Before, entonces todo @test, entonces todo @After

StackOverflow https://stackoverflow.com/questions/3520099

  •  29-09-2019
  •  | 
  •  

Pregunta

Me gustaría un corredor junit que ejecuta todos los métodos @Before, entonces todos los métodos @test, entonces todos los métodos @After.

Este es el funcionamiento de mi sistema-pruebas. Los métodos @Before se ejecutan, para configurar los datos de prueba y escenarios. Se inicia la aplicación. A continuación, los métodos @test se ejecutan con la aplicación que se ejecuta en segundo plano. Esos métodos @test pueden cambiar los datos o para responder a la solicitud. A continuación, el marco espera a la aplicación para terminar. Después, los métodos @After se ejecutan para verificar los resultados de la prueba.

Ya utilizo anotaciones junit, métodos aserción, y otros varios bits. Pero simplemente no puedo encontrar la manera de utilizar junits corredores para ejecutar los métodos de prueba de esta manera. No podía hacer que las cabezas ni colas de la interfaz "PC" en JUnit 4.8, o encontrar la manera de aplicar reglas a esto.

¿Fue útil?

Solución

Esto no es lo que hace JUnit. JUnit tiene una filosofía de diseño que enfatiza la unidad de pruebas independientes. Como tal, no es un marco natural para las pruebas del sistema. Lo que quiere hacer encaja muy bien en TestNG (que como un Objetivo de diseño intentos para horcajadas ambas pruebas unitarias y de sistema).

En el JUnit @Before y @After se ejecutan antes y después de cada prueba. Puede calzador este tipo de cosas en JUnit usando una suite, que las referencias a todas sus pruebas y es responsable de toda la instalación y desmontaje, así que los métodos @BeforeClass y @AfterClass de la suite consiguen ejecutar antes y después de la suite, que si organizas podría ser correctamente todas las pruebas del sistema.

Hay muchos problemas de organización en el código cuando se hace grande con el enfoque de JUnit, así que yo sugeriría se tiene en cuenta y marco alternativo si este es el grueso de lo que quiere hacer.

Otros consejos

Creo que se puede resolver esto haciendo un solo método de prueba real, que las llamadas sólo son sus pruebas reales, que no se declara como cComo.

Un poco como:

@Before
public void beforeTest(){}

@After
public void afterTest(){}

@Test
public void test(){
    test1();
    test2();
    test3();
}

public void test1(){}

public void test2(){}

public void test3(){}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top