Vous êtes sur la page 1sur 4

JUnit: primeros pasos

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 Ejecucin Preparacin de una clase con tests

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

2. Ejecucin en modo grfico:


java junit.awtui.TestRunner

3. Ejecucin en modo texto:

java junit.textui.TestRunner ClaseConTest

Preparacin de una clase con tests


Una clase con tests contiene tests del comportamiento de otra clase. La clase que contiene los tests slo debe cumplir unas reglas muy sencillas para que JUnit la reconozca y ejecute automticamente todos los tests que contiene. Un ejemplo sencillo. A continuacin se reproduce un ejemplo de una clase con un test:

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:

Mtodo assertxxx() de JUnit assertTrue(expresin) assertFalse(expresin) assertEquals(esperado,real) assertNull(objeto) assertNotNull(objeto)

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 .

Vous aimerez peut-être aussi