Test

Un Test con jmoordbunit es un EJB que se ejecuta al iniciar el contenedor.

Anotaciones

Debe contener las siguientes anotaciones:

  • @Startup

  • @Singleton

  • @DependsOn(Name_ofEJB_dependiente)

  • Report(path="path_reportes") //Opcional

  • @Test (en los métodos que se realizara el testing)

Detalle:

@Startup:

  • Indica que se ejecutara al iniciar la aplicaciòn en el contenedor

@Singleton

  • Indicamos que sera unico

@DependsOn()

  • El primero que deseamos ejecutar debe implementar la clase @DependsOn("TestEnvironment")

  • Si deseamos que se ejecute después de otro , idicamos el nombre del EJB padre @DependsOn("Padre")

@Report(path="")

  • Indicamos la ruta en que se generaran los reportes de los test.

UnitTest

Esta clase contiene todos los mètodos necesarios para ejecutar el test.

@Inject
UnitTest unitTest;

Generalmente necesitamos Inyectar:

  • Repository

  • Services (Opcional)

Métodos

Usamos metodos:

  • init(): Que se ejecuta al iniciar el ejb, alli colocamos los mètodos a realizar el test e inicializamos el UnitTest

  • destroy(): Se ejecuta cuando de destruye el EJB.

Ejemplo:

@PostConstruct
void init() {
unitTest.start(BodegaTest.class);
// invocar metodos a realizar el test
}
@PreDestroy
public void destroy() {
unitTest.end(BodegaTest.class);
}

Test simple

Objetivo del Test:

  • Ejecutar un test para un metodo no creado donde queremos verificar si no hay datos en una colecciòn llamada bodega.

Metodo:

  • findAll()

Usamos el mètodo unitTest.assertNotEquals("metodo",resultado_esperado, expresion_evaluar);

El verificara que el resultado no sea igual a cero y contara internamente el contador del evento.

unitTest.assertNotEquals("findAll", 0, bodegaRepository.findAll().size());

Agregarlo al init()

@PostConstruct
void init() {
unitTest.start(BodegaTest.class);
findAll();
save();
}

BodegaTest.java

import com.avbravo.ejbjmoordb.pojos.UserInfo;
import com.avbravo.jmoordbunit.anotation.Report;
import com.avbravo.jmoordbunit.anotation.Test;
import com.avbravo.jmoordbunit.test.UnitTest;
import com.avbravo.microtestingejb.entity.Bodega;
import com.avbravo.microtestingejb.repository.BodegaRepository;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.DependsOn;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.inject.Inject;
/**
*
* @author avbravo
*/
@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);
findAll();
}
@Test
private void findAll() {
unitTest.assertNotEquals(nameOfMethod(), 0, bodegaRepository.findAll().size());
}
@PreDestroy
public void destroy() {
unitTest.end(BodegaTest.class);
}
}

Cuando se ejecuta el proyecto de Test:

Podemos ver varios informes:

  • Resumen de los test.

  • Clases List: Nos muestra las clases y el total de resultados de cada operación

  • Podemos observar que se ejecuto en solo test sobre un método y el resultado fue exitoso, es decir la colección tiene documentos no esta vacía.

Resumen:

Clases List:

Podemos ver el detalle de los metodos ejecutados:

En este caso el test fallo, debido a que no tenemos documentos en la colecciòn.