Orden de ejecucion

Para establecer el orden de ejecución

Ejecución simultanea

Todos se ejecutan al iniciar al contenedor. Se utiliza la anotación @DependsOn("TestEnvironment")

Ejecución Dependiente

En algunas ocasiones debemos indicar el orden de ejecución de los Test.

Las reglas serian:

  • La clase principal debe implementar @DependsOn("TestEnvironment")

  • Las clases secundarias implementan @DependsOn("nombre-clase-que-debe-ejecutarse-primero")

Proyecto Web

En el proyecto Web siempre usamos el orden de ejecuciòn dependiente, ya que necesitamos invocar el método terminate() del unitTest en el ultimo test que realicemos.

En este ejemplo BodegaTest.java se ejecutara primero y ColorTest.java sera el ultimo en ejecutarse e invocara el terminate()

BodegaTest.java

  • Definimos que es dependiente de TestEnvironment y la ruta para los reportes.

@Startup
@Singleton
@DependsOn("TestEnvironment")
@Test
@Report(path = "/home/avbravo/Descargas/")
public class BodegaTest {
@Inject
UnitTest unitTest;
@Inject
BodegaRepository bodegaRepository;
@PostConstruct
void init() {
unitTest.start(BodegaTest.class);
....
}
@PreDestroy
public void destroy() {
unitTest.end(BodegaTest.class);
}
...
}

ColorTest.java

  • Depende de BodegaTest

  • Como es el ultimo test en ejecutarse invoca unitTest.terminate() desde el método init().

@Startup
@Singleton
@DependsOn("BodegaTest")
@Test
public class ColorTest {
@Inject
UnitTest unitTest;
@Inject
UnitView unitView;
@Inject
ColorRepository colorRepository;
@PostConstruct
void init() {
unitTest.start(ColorTest.class);
unitView.start(ColorTest.class);
......
unitTest.terminate();
}
@PreDestroy
public void destroy() {
unitTest.end(ColorTest.class);
}
......
}