Anotar la clase de pruebas con:

@RunWith(Arquillian.class)

Importar:

import org.jboss.arquillian.junit.Arquillian;

import org.junit.runner.RunWith;

Definir el método de la construcción del jar que contiene las clases que se van a probar. Este debe:

  • Estar anotado por @Deployment
  • Retornar un JavaArchive
  • Incluir todos los archivos que se necesitan para las prueba.

Se debe importar:

import org.jboss.arquillian.container.test.api.Deployment;

import org.jboss.shrinkwrap.api.ShrinkWrap;

import org.jboss.shrinkwrap.api.spec.JavaArchive;

package co.edu.uniandes.csw.nombreproyecto.persistence; import co.edu.uniandes.csw.company.entities.XYZEntity; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; import org.junit.runner.RunWith; @RunWith(Arquillian.class) public class XYZPersistenceTest { /** * * @return Devuelve el jar que Arquillian va a desplegar en el Glassfish * embebido. El jar contiene las clases de XYZ, el descriptor de la * base de datos y el archivo beans.xml para resolver la inyección de * dependencias. */ @Deployment public static JavaArchive createDeployment() { return ShrinkWrap.create(JavaArchive.class) .addPackage(XYZEntity.class.getPackage()) .addPackage(XYZPersistence.class.getPackage()) .addAsManifestResource("META-INF/persistence.xml", "persistence.xml") .addAsManifestResource("META-INF/beans.xml", "beans.xml"); } public XYZPersistenceTest() { } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { } @After public void tearDown() { } /** * Test of find method, of class XYZPersistence. */ @Test public void testFind() throws Exception { fail("testFind"); } /** * Test of findByName method, of class XYZPersistence. */ @Test public void testFindByName() throws Exception { fail("testFindByName"); } /** * Test of findAll method, of class XYZPersistence. */ @Test public void testFindAll() throws Exception { fail("testFindAll"); } /** * Test of create method, of class XYZPersistence. */ @Test public void testCreate() throws Exception { fail("testCreate"); } /** * Test of update method, of class XYZPersistence. */ @Test public void testUpdate() throws Exception { fail("testUpdate"); } /** * Test of delete method, of class XYZPersistence. */ @Test public void testDelete() throws Exception { fail("testDelete"); } }

Declarar las variables que se requieren para las pruebas e importar los paquetes necesarios:

  1. persistence: es el objeto de la clase que se va a probar. El contenedor inyectará una instancia de esta clase.
  2. em: un EntityManager para verificar los datos directamente sobre la base de datos
  3. utx: un UserTransactions para manipular los datos directamente sobre la base de datos
  4. data: este arreglo contendrá el conjunto de datos de prueba
/** * Inyección de la dependencia a la clase XYZPersistence cuyos métodos * se van a probar. */ @Inject private XYZPersistence persistence; /** * Contexto de Persistencia que se va a utilizar para acceder a la Base de * datos por fuera de los métodos que se están probando. */ @PersistenceContext private EntityManager em; /** * Variable para martcar las transacciones del em anterior cuando se * crean/borran datos para las pruebas. */ @Inject UserTransaction utx; /** * */ private List<XYZEntity> data = new ArrayList<XYZEntity>();

Este método setUp anotado con @Before se ejecutará antes de cada prueba.

  1. Llama clearData() que Borra los datos en la base de datos directamente utilizando el EntityManagery la UserTransaction
  2. Llama insertData() que Crea nuevos datos
@Before public void setUp() { try { utx.begin(); em.joinTransaction(); clearData(); insertData(); utx.commit(); } catch (Exception e) { e.printStackTrace(); try { utx.rollback(); } catch (Exception e1) { e1.printStackTrace(); } } }
  1. Llama clearData() que Borra los datos en la base de datos directamente utilizando el EntityManager y la UserTransaction
  2. Llama insertData() que Crea nuevos datos .
    1. Los nuevos datos son creados utilizando Podam quien crea datos aleatorios.
    2. Los datos que se crean son de la clase XYZEntity.
private void clearData() { em.createQuery("delete from XYZEntity").executeUpdate(); } private void insertData() { PodamFactory factory = new PodamFactoryImpl(); for (int i = 0; i < 3; i++) { XYZEntity entity = factory.manufacturePojo(XYZEntity.class); em.persist(entity); data.add(entity); } }

results matching ""

    No results matching ""