Se parte de que existe un proyecto donde se quiere probar una funcion (Proyecto Eclipse):
Esta clase tiene un metodo que se desea probar:
package es.prueba;
public class ClaseQueQuieroProbar {
public int funcionQueQuieroProbar (int valor, int valor2){
return valor + valor2;
}
}
Los pasos a seguir son los siguientes:
1º Crear un proyecto de test y añadir una dependencia con el proyecto anterior:
2º Copiar las librerias de JUnit e incluirlas en el classpath del proyecto:
Ahora ya se puede empezar a programar.
3º Crear en "ProyectoDePrueba" la clase que sera la prueba del metodo:
package es.prueba.pruebas;
import es.prueba.ClaseQueQuieroProbar;
import junit.framework.Assert;
import junit.framework.TestCase;
public class SumaPrueba extends TestCase {
public SumaPrueba (String nombre){
super(nombre);
}
public void laSumaEsCorretaPrueba (){
ClaseQueQuieroProbar claseQueQuieroProbar = new ClaseQueQuieroProbar();
int resultado = claseQueQuieroProbar.funcionQueQuieroProbar(3, 2);
Assert.assertEquals(resultado, 5);
}
}
3º Crear en "ProyectoDePrueba" la clase que sera el punto de inicio de todas las pruebas:
package es.prueba.pruebas;
import junit.framework.Test;
import junit.framework.TestSuite;
public class Incio
{
public static void main (String[] args) {
junit.textui.TestRunner.run (suite());
}
public static Test suite ( ) {
TestSuite suite = new TestSuite("Pruebas");
suite.addTest(new SumaPrueba("laSumaEsCorretaPrueba"));
return suite;
}
}
Ya esta, ahora si ejecutas la clase Inicio como una aplicacion normal tendras el siguiente resultado:
.
Time: 0,015
OK (1 test)
Si hubiese fallado daria algo como lo siguiente:
.F
Time: 0
There was 1 failure:
1) laSumaEsCorretaPrueba(es.prueba.pruebas.SumaPrueba)junit.framework.junit.framework.AssertionFailedError: expected:<5> but was:<3>
at es.prueba.pruebas.SumaPrueba.laSumaEsCorretaPrueba(SumaPrueba.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at es.prueba.pruebas.Incio.main(Incio.java:10)
FAILURES!!!
Tests run: 1, Failures: 1, Errors: 0
Como se puede observar es muy simple y tiene muchas posibilidades:
- Poner mas pruebas en la misma clase.
- Elegir el orden en el que se ejecutan las pruebas.
- Compartir informacion entre pruebas.
- Etc...
Este ejemplo es muy simple pero JUnit tiene muchas posibilidades:
- Integracion con otros frameworks como Spring, Maven, etc..
- Uso de anotaciones.
- Etc...
Lo que te aconsejo es que cada vez que estes desarrollando y aparezca:
- Una funcion que crees que puede fallar facil por su complejidad, o por sus excesivas dependencias, etc..
- Una logica (varias funciones y varias clases) que es facil que falle.
-Etc..
Te tomes 5 minutos e incluyas una prueba en tu proyecto de pruebas. Periodicamente ejecuta las pruebas (y por supuesto antes de generar una version de tu aplicación). Te sorprenderas de la cantidad de errores "tontos" de desarrollo que se pueden eliminar asi.
Espero que os sea util. Un saludo
No hay comentarios:
Publicar un comentario