Concepto y definición de tipos de Datos Abstractos en c++.pptx
Programación III (Java) - 09 Cierre
1. 9. Cierre
JUnit y pruebas unitarias
Examen
Programación III Tema 9 - Cierre
2. JUnit y pruebas unitarias
• JUnit es un framework para desarrollar
pruebas unitarias
– Pruebas de una clase / módulo de código
– Objetivo: aislar las partes y probar la corrección
de cada una
– Se podrán ejecutar de forma automática
• JUnit es una herramienta gratuita
– http://www.junit.org
– Integrada con Eclipse, NetBeans y otros IDEs
Programación III Tema 9 - Cierre
3. ¿Ganamos/perdemos
tiempo?
• Es habitual la idea de que hacer JUnit's es
una pérdida de tiempo
– Pero es más una inversión
– No sólo vale para prueba inicial sino
• seguir probando en la evolución del sistema
• permiten incorporar los bugs como nuevas pruebas
• de forma progresiva ("aprender de los errores")
• ¡Merece la pena invertir el tiempo para luego
recuperarlo!
Programación III Tema 9 - Cierre
4. Versión de JUnit
• JUnit 3 utiliza código Java "habitual"
• JUnit 4 utiliza anotaciones
• En este resumen sólo hablaremos de JUnit 3
Programación III Tema 9 - Cierre
5. Pasos a seguir
– Importar JUnit:
– import junit.framework.TestCase;
– Crear una clase que extienda TestCase
• Clase de pueba para una clase
– Implementar método setUp()
• Inicialización de las pruebas
– Implementar método tearDown()
• Si procede para liberar recursos (cerrar ficheros...)
– Definir métodos de test: testXXX()
• Uno por cada método original (XXX = nombre)
– Ejecución del caso de prueba
• Método run()
Programación III Tema 9 - Cierre
6. ¿Qué hay en los tests?
– Varios métodos que se pueden utilizar:
• testEquals( val1, val2 ) --> si no son equals, fallo
• testTrue( cond ) --> si no es cierta, fallo
• fail( mensaje ) --> si llega a ejecutarse es fallo
– También aserciones:
• assertFalse( cond ), assertTrue( cond )
• assertNull( obj ), assertNotNull( obj )
• assertSame( obj ), assertNotSame( obj )
Programación III Tema 9 - Cierre
7. Ejemplo
public class OperacionTest extends TestCase {
Operacion o1;
protected void setUp() throws Exception {
super.setUp();
o1 = Operacion.creaOperacion( "2 / -3 * (17 + 1)" );
}
public void testCreaOperacion() {
Operacion o1b = new OperacionBinaria(
new Numero(2), '/', new Numero(-3) );
Operacion o1b2 = new OperacionBinaria(
new Numero(17), '+', new Numero(1) );
o1b = new OperacionBinaria( o1b, '*', o1b2 );
assertEquals( o1, o1b );
assertTrue( o1.getValor()==o1b.getValor() );
}
Programación III Tema 9 - Cierre
8. TestSuite
• Se pueden agrupar varias pruebas
– Para lanzar todas juntas
TestSuite ts = new TestSuite( "ejemplo" );
ts.addTest( new OperacionTest() );
ts.addTest( new FraccionTest() );
ts.addTest( new RealTest() );
Programación III Tema 9 - Cierre
9. Examen
• Dos horas
• Ejercicio de programación en máquina
– Partiendo de código ya desarrollado
– Incluirá
• Herencia
• Interfaces
• Excepciones
• Ventanas
• Eventos
• Threads
• Que compile, que funcione
Programación III Tema 9 - Cierre