Pruebas de la Persistencia

El propósito de las pruebas de persistencia es probar, de manera aislada sin pasar por las otras capas de la aplicación, una clase de persistencia. De acuerdo con nuestras convenciones de nombre una clase XYZPersistence.

Para lograr esto, utilizamos un framework llamado Arquillian que nos facilita:

  1. Crear un empaquetado (en este caso un jar) con solo las clases que vamos a probar.
  2. Desplegar ese empaquetado en un contenedor embebido (glassfish embebido). Embebido significa que al lanzar la prueba Arquillian se ocupa de ejecutar un "pequeño" glassfish donde se va a desplegar el empaquetado que queremos.
  3. Una vez que se termine la ejecución de todas las pruebas Arquillian se ocupa de apagar el glassfish que había iniciado.
  4. El contenedor embebido que maneja Arquillian tiene también una base de datos Derby solo para las pruebas que no interfiere con nuestra base de datos del proyecto.

Las pruebas de persistencia propiamente dichas son programadas utilizando Junit. Es decir habrá un método de prueba por cada método en la clase XYZPersistence.

La estrategia general para cada método de la clase de persistencia consiste en: 1) crear datos aleatorios, 2) invocar los métodos que se van a probar y 3) verificar si en la base de datos efectivamente se hicieron los cambios utilizando un entity manager independiente de los métodos que se están probando.

Más específicamente los pasos son los siguientes:

  1. Se crea el archivo que se va a desplegar con las clases Entity y la clase Persistence que se requiera para la prueba.
  2. Antes de cada método prueba se borra la base de datos
  3. Se crean entidades con datos aleatorios de las entidades que se van a probar utilizando PODAM
  4. Se insertan los datos creados con PODAM utilizando un entity manager dentro de una transacción definida explícitamente.
  5. Por cada método:
  6. Se construye datos adicionales si se requiere
  7. Se invoca el método que se va a probar
  8. Se utiliza un entity manager, para verificar los cambios en la base de datos.
  9. Se comparan los resultados utilizando los assert de junit.

results matching ""

    No results matching ""