Académique Documents
Professionnel Documents
Culture Documents
JUnit es un entorno que permite ejecutar tests de clases Java. Este documento contiene una breve descripcin de cmo instalar y utilizar JUnit. A continuacin encontrars la siguiente informacin:
Instalacin
A continuacin se describen los pasos a seguir para instalar JUnit: 1. Descomprimir el paquete. Si ests en un laboratorio de la facultad, este paso no tienes que realizarlo. Si es un ordenador particular, debes descomprimir el paquete JUnit: unzip junit3.8.1.zip 2. Aadir junit.jar al CLASSPATH. Esta operacin puede ser diferente segn la mquina de que se trate. Por ejemplo, las mquinas arnelaxx tienen el CLASSPATH configurado (bajo linux) por el administrador y no tienes que hacer nada. En cambio, en la mquina java debes aadir la siguiente lnea al fichero .profile del directorio principal de tu usuario y luego volver a conectarte: export CLASSPATH=$CLASSPATH:/usr/java13_64/lib/fic/junit.jar:.
Ejecucin
Supongamos que tenemos una clase ClaseConTest.java que contiene tests preparados para JUnit. El primer paso ser compilar la clase con javac. A continuacin, para ejecutarla utilizando el JUnit tenemos tres alternativas: 1. Ejecucin en modo grfico con Swing:
java junit.swingui.TestRunner
import junit.framework.*; /** * Un test de ejemplo sobre la clase String. */ public class EjemploTest extends TestCase { public void testConcat() { String s = "hola"; String s2 = s.concat(" que tal"); assertTrue(s2.equals("hola que tal")); } // testConcat public static Test suite() { return new TestSuite(EjemploTest.class); } // suite public static void main (String[] args) { junit.textui.TestRunner.run(suite()); } // main } // class
En este ejemplo se pueden apreciar los requerimientos mnimos que debe cumplir una clase con tests preparados para ejecutar con JUnit:
La clase debe ser una subclase de TestCase (clusula extends TestCase) Un test para JUnit es todo mtodo cuyo nombre comience por test. En este ejemplo, el nico test est contenido en el mtodo testConcat(). Este test hace una comprobacin acerca del funcionamiento del mtodo concat() de la clase String. Ntese que un mtodo de test debe ser tipo void.
Toda clase de tests debe contener los mtodos suite() y main() definidos. En el ejemplo se han includo implementaciones genricas para ambos mtodos que pueden servir en la mayora de los usos.
En cuanto al funcionamiento, JUnit se encarga de ejecutar todos los mtodos testxxx() que contiene la clase. En el ejemplo, el nico mtodo con este nombre es testConcat(), por tanto JUnit lo ejecutar. Podemos observar que dentro de testConcat() hay una llamada al mtodo assertTrue(). Este mtodo comprueba si la expresin que se le pasa como argumento es cierta, y trasmite el resultado a JUnit. De esta forma, al terminar la ejecucin de todos los tests JUnit nos informa de aquellos que se han ejecutado correctamente y de aquellos que han producido algn error. En este ejemplo la comprobacin se cumple y JUnit nos indica que todos los tests han sido superados con xito. Mtodos assertxxx() de JUnit. JUnit dispone de los siguientes mtodos para hacer comprobaciones:
Qu comprueba comprueba que expresin evale a true comprueba que expresin evale a false comprueba que esperado sea igual a real comprueba que objeto sea null comprueba que objeto no sea null comprueba que objeto_esperado y objeto_real sean el mismo objeto
assertSame(objeto_esperado,objeto_real)
comprueba que objeto_esperado no sea assertNotSame(objeto_esperado,objeto_real) el mismo objeto que objeto_real fail() hace que el test termine con fallo
Todos los mtodos anteriores admiten opcionalmente un argumento String con un mensaje explicativo de la comprobacin que realiza el test. De estar presente, este
argumento sera el primero de la lista, por ejemplo assertTrue(mensaje,expresin). Ms informacin: definicin de todos los mtodos assertxxx() de JUnit . Test de un mtodo que produce una excepcin. A continuacin se reproduce el cdigo de un test que comprueba que una llamada a un mtodo termina con una excepcin:
public void testIndiceNoValido() { String s = "mensaje"; try { char c = s.charAt(-5); fail("Deberia haber lanzado una excepcion"); } catch (IndexOutOfBoundsException e) { // si sale por aqui es que la prueba ha ido bien } }
Este test est pensado para comprobar que la llamada al mtodo charAt() de la clase String devuelve una excepcin. Segn el API de Java , este mtodo devuelve la excepcin IndexOutOfBoundsException si el ndice que le pasamos como argumento es negativo o es ms grande que el tamao del string. Por tanto la llamada s.charAt(-5) debera terminar con una excepcin y salir por la clusula catch. En caso de que charAt() no lanzase esta excepcin, entonces se ejecutara la siguiente lnea que contiene la instruccin fail() y JUnit indicara que se ha producido un error. Inicializacin de tests. Imaginemos que varios tests utilizan un mismo objeto que debe ser inicializado de una determinada manera para poder realizar los tests. Esto obligara a repetir la inicializacin de dicho objeto en cada uno de los mtodos test. Para evitar esta repeticin de cdigo, JUnit permite reunir en el mtodo setUp() el cdigo de inicializacin comn a todos los tests. Este mtodo setUp() es llamado por JUnit antes de ejecutar cada test. De igual forma, el mtodo tearDown() es llamado despus de ejecutar cada test con la intencin de que contenga cdigo para destruir los objetos utilizados en cada test. A continuacin se reproducen las definiciones de ambos mtodos: protected void setUp() protected void tearDown() Ms informacin: todos los mtodos de TestCase .