Fecha de creación del tutorial: 2003-06-21
JUnit: Pruebas unitarias en Java
Cuando realizados desarrollos profesionales, debemos tener en cuenta que no solo hay que ejecutar el proyecto... hay que ejecutarlo bien.
Un proyecto no esta terminado hasta que esta en producción, tiene su documentación y dispone de las garantias adecuadas de que va a funcionar en todos los escenarios posibles.
Además, normalmente, se desarrolla en un entorno, se empaqueta y posteriormente se entrega a un equipo de calidad para que lo pruebe y lo pase a otro (pre-producción y producción).
Todo esto hay que tenerlo en cuenta a la hora de dimensionar, diseñar y ejecutar un proyecto.
Del mismo modo, tambien debemos tener en cuenta que no lo podemos hacer de un modo distinto en cada proyecto. Hemos de utilizar mecanismos estandares y ampliables simpre que se pueda.
Otro punto que cabe recordar (y que muchas veces se olvida) es que la tecnología es y debe ser un medio para que nuestros clientes consigan objetivos empresariales y el puritanismo tecnológico a nuestro cliente normalmente le dá igual .... tenemos que alcanzar un equilibrio entre calidad y resultados ....
Digo esto porque seguro que alguien descubre como hacer test unitarios y se le ocurre que a partir de ahora todo el sistema tenga test unitarios (economicamente no es muy viable .... tenemos que usar el sentido común)
Lo primero que vamos a hacer es decargarnoslo, y descomprimirlo.

Luego tenemos que asegurarnos de poner en la variable de entorno classpath junit.jar
Ahora ejecutamos el comando de prueva
java junit.swingui.TestRunner junit.samples.AllTests
Y comprobamos el resultado:

Si no os a funcionado ..... seguro que es un problema de classpath ....
Bueno, ya esta configurado el entorno .... ahora vamos a centrarnos en los principios de los Test Unitarios y como aplicarlo a nuestros programas.
Hacemos un prográma mínimo para que funcionen nuestro propios tests y vemos los requerimientos básicos ...
import junit.framework.*;
public class pruebas extends TestCase
{
pruebas(String tituloTest)
{
super(tituloTest);
}
protected void runTest()
{
int i = 0;
this.assertTrue("Valor Igual a 3",i==3);
}
public static Test suite()
{
TestSuite suite= new TestSuite("Pruebas de clase pruebas");
suite.addTest(new pruebas("Clase principal"));
return suite;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// nuestro programa hace lo que deseemos
}
}
|
Para que una clase sea invocable desde JUnit, tenemos que hacer de derive de junit.framework.TestCase
Nuestro test, debe redefinir el método protected void runTest()
Dentro de este método ... haremos llamadas a los métodos de verificación com assertTrue("Valor Igual a 3",i==3);
Para que podamos invocar desde una herramienta gráfica los test, debemos redefinir el método public static Test suite()
Y dentro de este método, añadiremos todos los test que deseemos addTest(new pruebas("Clase principal"));
Bueno ... compilamos y vemos que pasa ...

Vemos la otra lengueta ...

Bueno ... seguro que el ejemplo no os a parecido demasiado claro ... asi que vamos a hacer unos pocos más ...
Supongamos que una de nuestras clases se encarga de leer los parámetros de un fichero ... y queremos asegurarnos que cuando pasemos entre entornos ese fichero esté
import junit.framework.*;
import java.io.*;
public class leerPropiedades extends TestCase
{
String nombreFichero="parametros.ini";
public leerPropiedades(String nombreTest)
{
super(nombreTest);
}
protected void runTest()
{
try
{
File fichero = new File(nombreFichero);
this.assertTrue("Podemos Leer",fichero.canRead());
}
catch(Exception e)
{
this.fail("Fallo al identificar Fichero " + nombreFichero);
}
}
public static Test suite()
{
TestSuite suite= new TestSuite("Manipulación de propiedades");
suite.addTest(new leerPropiedades("Existe el Fichero"));
return suite;
}
public static void main(String[] args) {
}
}
|
El resultado si el fichero no existe o no tenemos privilegios sería

Si el fichero existe ... la salida sería

Lo vamos a dejar de momento aquí .. en próximas entregas expondremos técnicas más avanzadas ....
Anímate y coméntanos lo que pienses sobre este tutorial
Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.
| Autor | Mensaje de usuario registrado |
|---|
- Puedes inscribirte en nuestro servicio de notificaciones haciendo clic aquí.
- Puedes firmar en nuestro libro de visitas haciendo clic aquí.
- Puedes asociarte al grupo AdictosAlTrabajo en XING haciendo clic aquí.
- Añadir a favoritos Technorati.
Esta obra está licenciada bajo licencia Creative Commons de
Reconocimiento-No comercial-Sin obras derivadas 2.5
Recuerda
Autentia te regala la mayoría del conocimiento aquí compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseño ... y muchas otras cosas.
¿Nos vas a tener en cuenta cuando necesites consultoría o formación en tu empresa?, ¿Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros?
Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...
Autentia = Soporte a Desarrollo & Formación.
Tutoriales recomendados
| Nombre | Resumen | Visitas | Valoración | Votos | ||
|---|---|---|---|---|---|---|
| JMeter. Uso de funciones. | En este tutorial tratamos el uso de las funciones más habituales de la herramienta JMeter. | 2010-01-26 | 464 | - | - | ![]() |
| JMeter. Gestión de usuarios | En este tutorial tratamos la simulación de distintos usuarios, en la herramienta JMeter, mediante el archivo externo users.xml o mediante la función Counter. | 2010-01-14 | 698 | - | - | ![]() |
| JMeter y JSF. Extracción del parámetro ViewState | En este tutorial ofrecemos una solución a la parametrización del atributo ViewState, de JSF (Java Server Faces), cuando ejecutamos scripts de pruebas de carga mediante la herramienta JMeter. | 2010-01-11 | 662 | - | - | ![]() |
| Procesador Inteligente de Eventos (IEP) con OpenESB | En este tutorial mostramos un ejemplo practico de gestion de eventos en SOA con IEP (Intelligent Event Processor) de OpenESB y probamos el resultado con soapUI | 2010-01-04 | 702 | - | - | ![]() |
| PHP Vs Java | El cometido de este documento es el de realizar un análisis en profundidad de dos tecnologías ampliamente aceptadas por la comunidad diseñadora de portales web, como son PHP y Java. | 2010-01-04 | 1638 | - | - | ![]() |
| Tutorial de BPEL con OpenESB (I) | En este tutorial vamos a aprender a crear procesos BPEL practicando con un ejemplo: un proceso de negocio de venta online de libros. | 2009-12-29 | 1418 | - | - | ![]() |
| Tutorial de BPEL con OpenESB (II) | Continuación del Tutorial de BPEL con OpenESB (I). | 2009-12-29 | 1076 | - | - | ![]() |
| Pruebas funcionales de servicios web con soapUI | Las pruebas unitarias en cualquier paradigma de programación son, más que una buena práctica, una garantía para obtener un software robusto y (más) fácilmente mantenible. Como responsables de diseño o desarrollo de web services hemos de aplicar estas buen | 2009-12-28 | 1118 | - | - | ![]() |
| JavaBean Datasource Ireport | La particularidad del caso que nos ocupa, es conseguir que la fuente de datos del informe sea una lista de JavaBeans y no una consulta definida previamente en el informe. | 2009-12-14 | 1259 | Bueno | 1 | ![]() |
| Analizando la calidad del código Java con Sonar | En este tutorial vamos a dar a conocer la herramienta Sonar para el control de la calidad del código de nuestros proyectos | 2009-12-07 | 1592 | - | - | ![]() |
Nota:
Los tutoriales mostrados en este Web tienen como objetivo la difusión del conocimiento.
Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores.
En algún caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueños. Si algún afectado desea que incorporemos alguna reseña específica, no tiene más que solicitarlo.
Si alguien encuentra algún problema con la información publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolución.







