En anteriores post ya hemos desarrollado un poco con Openxava. Pero el ciclo no esta completo, debemos testear nuestra aplicación y lo mínimo (mínimo, mínimo) debe ser al menos una serie test funcionales (si son automáticos mejor). Así que pare ello utilizaremos JUnit.
JUnit es un conjunto de bibliotecas que son utilizadas en programación para hacer pruebas unitarias de aplicaciones Java.
OpenXava nos proporciona una clase llamada ModuleTestBase que por medio de HTMLUnit permite automatizar las pruebas como si las estuviésemos haciendo desde el navegador.
Creando una prueba unitaria para Openxava
Vamos a partir de que tenemos un modulo Customer que funciona. Openxava es sencillo y para crear un test solo tenemos que crear una clase llamada CustomerTest dentro del paquete org.openxava.invoicing.test La clase de test debe extender a ModuleTestBase.
Así que allá vamos:
package org.openxava.invoicing.test; import org.openxava.tests.*; public class CustomerTest extends ModuleTestBase{ public CustomerTest(String testName) { super(testName, "Invoicing", "Customer"); } }
Esto es solo el principio, ahora tenemos que crear el test propiamente dicho.
En el test lo que haremos será crear un nuevo cliente, lo buscaremos, lo modificaremos y por último para no dejar rastro lo borraremos.
Para simular acciones de usuario tenemos métodos como execute() o setValue() y para poder verificar el estado de la interfaz podemos utilizar assertValue() o assertMessage(). Aquí dejo el link para la API, aunque siempre podemos utilizar Ctrl+espacio para autocompletar.
Este método es la prueba unitaria debemos ponerla dentro de la clase CustomerTest para poder ejecutarla.
public void testCreateReadUpdateDelete() throws Exception { // Create execute("CRUD.new"); setValue("number", "77"); setValue("name", "JUNIT Customer"); setValue("address.street", "JUNIT Street"); setValue("address.zipCode", "77555"); setValue("address.city", "The JUNIT city"); setValue("address.state", "The JUNIT state"); execute("CRUD.save"); assertNoErrors(); assertValue("number", ""); assertValue("name", ""); assertValue("address.street", ""); assertValue("address.zipCode", ""); assertValue("address.city", ""); assertValue("address.state", ""); // Read setValue("number", "77"); execute("CRUD.refresh"); assertValue("number", "77"); assertValue("name", "JUNIT Customer"); assertValue("address.street", "JUNIT Street"); assertValue("address.zipCode", "77555"); assertValue("address.city", "The JUNIT city"); assertValue("address.state", "The JUNIT state"); // Update setValue("name", "JUNIT Customer MODIFIED"); execute("CRUD.save"); assertNoErrors(); assertValue("number", ""); assertValue("name", ""); // Verify if modified setValue("number", "77"); execute("CRUD.refresh"); assertValue("number", "77"); assertValue("name", "JUNIT Customer MODIFIED"); // Delete execute("Invoicing.delete"); assertMessage("Customer deleted successfully"); }
Ejecutar las pruebas desde Eclipse
Antes de ejecutar la prueba tenemos que añadir un pequeño cambio, debemos indicarle a JUnit que estamos utilizando PostgreSQL, así que debemos añadir el controlador JDBC a Java Builth Path de la siguiente manera.
Solo tenemos que ponernos encima de la clase y pinchar sobre Run As-> JUnit Test y aparecerá la nueva vista con los tests.
Con esto ya tenemos nuestra prueba, ahora nos queda realizar pruebas para cada uno de los módulos. para así llegar a tener baterías (suite) de tests.
Parcialmente tomado de libro «Aprende Openxava con Ejemplo»