Bueno pues JUnit es una herramienta que desde que se publicó su versión 3.8.1 ha quedado un poco congelada. Pero recientemente el proyecto a vuelto a cobrar vida con las nuevas versiones 4.x. Estas nuevas versión introducen algunos conceptos nuevos y hacen uso de las anotaciones introducidas en la versión 1.5 de java.
A continuación, se listan las principales novedades de esta versión de JUnit respecto a versiones precedentes:
- Es necesario utilizar la versión 5 de la JDK para ejecutar los tests.
- Las clases de prueba no necesitan heredar de la clase junit.framework.TestCase.
- Los métodos de inicialización y liberación pueden ser definidos con cualquier nombre siempre y cuando sean etiquetados adecuadamente con @Before y @After. Además puede existir más de un método de inicialización y liberación simultaneamente.
- Los nombre de los métodos de prueba no necesitan contener el prefijo test, sin embargo es necesario que sean definidos con la etiqueta @Test, la cual permite ser utilizada con parámetros que enriquecen las posibilidades de la prueba.
- Existe la posibilidad de declarar métodos de inicialización y liberación globales a la clase de pruebas mediante las etiquetas @BeforeClass y @AfterClass.
JUnit3.8.1
package pruebasSistemaSoftware.junit381;
import junit.framework.*;
import servidorEstadoTrafico.Registro;
import servidorEstadoTrafico.RegistroMalFormadoException;
import servidorEstadoTrafico.Tramo;
public class RegistroTest extends TestCase {
private Registro m_registro;
public void setUp(){
String strCarretera ="M-40";
String strHora="12:23:45";
String strFecha="1/3/2007";
String strClima="Nublado";
String strObras = "No";
m_registro = new Registro(strCarretera,strHora,strFecha,strClima,strObras);
Tramo tramo1 = new Tramo("0","10","3","1","Retenciones","Sin accidentes");
Tramo tramo2 = new Tramo("10","12","2","0","Retenciones","Sin accidentes");
Tramo tramo3 = new Tramo("12","15","3","1","Retenciones","Sin accidentes");
m_registro.anadirTramo(tramo1);
m_registro.anadirTramo(tramo2);
m_registro.anadirTramo(tramo3);
}
public void tearDown(){
}
public void testComprobarFormato(){
try{
m_registro.comporbarFormato();
} catch (RegistroMalFormadoException e){
fail("Se ha originado una excepcion inesperada" + e.toString());
}
}
public void testObtenerLongitud(){
assertEquals(m_registro.obtenerLongitud(),10+2+3);
}
JUnit 4.x
package pruebasSistemaSoftware.junit4.2;
import java.lang.*;
import java.util.*;
import org.junit.Test;
import org.junit.After;
import org.junit.Before;
import static org.junit.Assert.*;
import junit.framework.JUnit4TestAdapter;
import servidorEstadoTrafico.Registro;
import servidorEstadoTrafico.RegistroMalFormadoException;
import servidorEstadoTrafico.Tramo;
public class RegistroTest{
private Registro m_registro;
@Before public void inicializar(){
String strCarretera = "M-40";
String strHora="12:23:45";
String strFecha="1/3/2007";
String strClima="Nublado";
String strObras = "No";
m_registro = new Registro(strCarretera,strHora,strFecha,strClima,strObras);
Tramo tramo1 = new Tramo("0","10","3","1","Retenciones","Sin accidentes");
Tramo tramo2 = new Tramo("10","12","2","0","Retenciones","Sin accidentes");
Tramo tramo3 = new Tramo("12","15","3","1","Retenciones","Sin accidentes");
m_registro.anadirTramo(tramo1);
m_registro.anadirTramo(tramo2);
m_registro.anadirTramo(tramo3);
}
@After public void liberar(){
}
@Test(expected=RegistroMalFormadoException.class)
public void comprobarFormato() throws RegistroMalFormadoException {
m_registro.comprobarFormato();
}
@Test(timeout=1000)
public void obtenerLongitud(){
assertEquals(m_registro.obtenerLongitud(),10+2+3);
}
}
Ejemplos extraidos del libro "Pruebas de Software y JUnit Un análisis en profundidad y ejemplos prácticos"