Unit Test para EJB 3.1
NetBeans 6.8 viene con una (de muchas) característica novedosa: Pruebas Unitarias para EJB 3.1.
Para ello, primero recordemos lo siguiente:
Ahora, recordemos algunas de las características del EJB 3.1:
Hecho el recordatorio, crearemos un SessionBean pero que sea Singleton y que no sea ni local ni remote. Este Bean se llamará "SeriesBean"
Para nuestro ejemplo, crearemos un método llamado "factorial" que hace justamente eso: calcular el factorial
Con la clase recién creada y seleccionada, entramos a la opción del menú principal: Tools > Create JUnit Tests. Seleccionamos a JUnit 4.x. Luego, en la ventana de creación de la prueba, seleccionar al menos las siguientes opciones: Method Access Level: Public, Generated Code: Default Method Bodies
Clic en OK, y veamos la clase que ha creado.
Modifiquemos un poco el código para ver si es cierto que nos ha creado un JUnit para un EJB.
Ejecutamos la prueba con Alt+F6 y listo.
Ahora podemos crear y probar EJBs con más comodidad.
Para ello, primero recordemos lo siguiente:
- EJB 3.1 es parte de Java EE 6
- Glassfish V3 implementa Java EE 6
- NetBeans 6.8 tiene soporte para Java EE 6, y por tanto también a Glassfish V3
Ahora, recordemos algunas de las características del EJB 3.1:
- Existen los @Singleton que son como un Stateless pero único y perpetuo en el contenedor. Permite también sincronización para evitar "datos cruzados".
- Ya no requiere de una interfaz como local o remote, puede ser una clase y nada más.
- Para acceder a través de un JDNI no se necesitará de direcciones raras según sea el contenedor. Todas serán "globales" para un mismo estándar.
Hecho el recordatorio, crearemos un SessionBean pero que sea Singleton y que no sea ni local ni remote. Este Bean se llamará "SeriesBean"
Para nuestro ejemplo, crearemos un método llamado "factorial" que hace justamente eso: calcular el factorial
package ejb;
import javax.ejb.LocalBean;
import javax.ejb.Singleton;
@Singleton
@LocalBean
public class SeriesBean {
public long factorial(long base) {
if (base < 1) {
return 1;
}
return factorial(base - 1) * base;
}
}
Con la clase recién creada y seleccionada, entramos a la opción del menú principal: Tools > Create JUnit Tests. Seleccionamos a JUnit 4.x. Luego, en la ventana de creación de la prueba, seleccionar al menos las siguientes opciones: Method Access Level: Public, Generated Code: Default Method Bodies
Clic en OK, y veamos la clase que ha creado.
package ejb;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
public class SeriesBeanTest {
public SeriesBeanTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Test
public void testFactorial() throws Exception {
System.out.println("factorial");
long base = 0L;
SeriesBean instance = (SeriesBean)javax.ejb.embeddable.EJBContainer.createEJBContainer().getContext().lookup("java:global/classes/SeriesBean");
long expResult = 0L;
long result = instance.factorial(base);
assertEquals(expResult, result);
fail("The test case is a prototype.");
}
}
Modifiquemos un poco el código para ver si es cierto que nos ha creado un JUnit para un EJB.
@Test
public void testFactorial() throws Exception {
System.out.println("factorial");
long base = 20;
SeriesBean instance = (SeriesBean)javax.ejb.embeddable.EJBContainer
.createEJBContainer()
.getContext()
.lookup("java:global/classes/SeriesBean");
long expResult = 2432902008176640000L;
long result = instance.factorial(base);
assertEquals(expResult, result);
}
Ejecutamos la prueba con Alt+F6 y listo.
Ahora podemos crear y probar EJBs con más comodidad.
Comentarios
Publicar un comentario
Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups
Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/