Lenguaje Java Avanzado



Documentos relacionados
Pruebas de unidad con JUnit

Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005

JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES

Capitulo 3. Test Driven Development

Contenido. Pruebas del Software. Verificación vs. Validación. Prueba de Software. Information Engineering Research Group

Testing. Contenidos. Proyectos de tests. Curso 13/14

Curso 13/14. Desarrollo de aplicaciones Android. Testing

Técnicas Avanzadas de Testing Automatizado

Android avanzado. Sesión 6: Depuración y pruebas. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Práctica 7. Pruebas. Introducir conceptos básicos de pruebas unitarias en sistemas orientados a objetos.

Demo. TDD desde Cero. Acceptance Test Driven Development.

Tema 3. Test Driven Development

Aseguramiento de la calidad y pruebas de software

Experto Universitario Java Enterprise Spring

Lenguaje Ruby y su entorno

SCR6150c Versión 2.0(12/01/05)

Pruebas unitarias en profundidad

Ingeniería Software. Verificación y Validación

Java en 2 horas. Rodrigo Santamaría

Tutorial básico del entorno de desarrollo Eclipse.

Programación Orientada a Objetos con Java

Clase Práctica Nº 1 ED 2015

Automatización de Pruebas de Software con Herramientas Open Source. Henry Eduardo Carrión Cristóbal

Pruebas unitarias. Que son las pruebas unitarias. Porque realizar pruebas unitarias

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

DESARROLLO DE SOFTWARE DE CALIDAD: EXTREME PROGRAMMING Y HERRAMIENTAS OPENSOURCE. Mª Carmen Bartolomé. mcbartolome@qualityobjects.

PRÁCTICA 1 MANUAL BÁSICO DE ECLIPSE

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Casos de prueba: JUnit

Caso práctico Alquiler de películas en un vídeo-club

Desarrollo de Aplicaciones ios

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Desarrollo de Servicios Web con JBuilder

Introducción al lenguaje de programación java

Pruebas de Unidad en BlueJ

CAPÍTULO 3 VISUAL BASIC

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Requisitos. Universidad ORT Arquitectura de Software

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones.

Práctica 2 Gráficos Vectoriales con SVG (versión )

Capacitación Rational Funcional Tester

La obra se proporciona bajo los términos de esta licencia pública de Sisoft de México

Desarrollo de Aplicaciones para Android

Práctica 1. Introducción a JUnit

Práctica 5: Common Object Request Broker Architecture CORBA

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Universidad ORT - Arquitectura de Software. Requisitos

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Pruebas de Software: Junit. Departamento de Sistemas y Computación Facultad de Ingeniería Universidad de los Andes

PROGRAMACIÓN EN JAVA

Práctica 2: Java Remote Method Invocation (RMI)

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

Taller de Test Driven Development

Servicios web con SOAP y Eclipse

Benemérita Universidad Autónoma del Estado de Puebla

Java, JavaME y el entorno Eclipse - Ejercicios

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Técnicas Avanzadas de Testing Automático

METODOLOGÍA DEL PROCESO DE PRUEBAS DEL GOBIERNO DEL PRINCIPADO DE ASTURIAS METESPA

Universidad de Cantabria

Programación orientada a objetos

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Introducción al Proceso de Pruebas.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Tema 5 - Pruebas del software Ingeniería del Software de Gestión II

Especialista Universitario Java Enterprise. Struts. Sesión 4: Introducción a Struts Depto. Ciencia de la Computación e IA

Uso de excepciones en Java

Generación de código a partir de UML

ATLAS MANUAL DE USUARIO SERVICIO DE TRAZAS

Ahorcado online multijugador

Tutorial Envio de correos con Java Mail

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

Desarrollo de apps para móviles Android. Entorno de desarrollo

1

Concurrencia. Primitivas IPC con bloqueo

Introducción al lenguaje Java

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Manual de NetBeans y XAMPP

Actividades de Divulgación del Centro Atómico Bariloche. Qué hay detrás de un programa de computadora? Daniela Arnica Pablo E. Argañaras.

1 Índice Introducción Propósito Alcance Modelo Arquitectónico Inicial... 3

Artesanía de So-ware y Desarrollo Dirigido por Pruebas

Introducción a las Pruebas de Software

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEBSERVICE

Testing. Por: Fernando Dodino Juan Pablo Picasso Gabriel Szlechtman

Ingeniería del Software Arquitectura Física en 3 niveles

Programación Orientada a Objetos. Java: Excepciones

Curso de Java POO: Programación orientada a objetos

Construcción de editores de modelos con EMF

Benemérita Universidad Autónoma del Estado de Puebla

Transcripción:

Lenguaje Java Avanzado Sesión 4: Pruebas con JUnit 2012-2013 Depto. Ciencia de la Computación e IA

Índice Introducción a JUnit Implementación de las pruebas Ejecución de pruebas Pruebas con excepciones Fixtures Suites de pruebas Objetos mock Test-Driven Development Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 2

Introducción a JUnit JUnit es una librería que permite automatizar las pruebas de los diferentes módulos de una aplicación Java Caso de prueba: clase o módulo con métodos para probar los métodos de una clase o módulo concreto Suite de prueba: organización de casos de prueba, en forma de una jerarquía determinada Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 3

Implementar los casos de prueba Una clase de prueba por cada clase a probar Mismo nombre, pero con sufijo Test Mismo paquete, directorios separados /src org.especialistajee.tienda.bo.empleadobr /test org.especialistajee.tienda.bo.empleadobrtest Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 4

Método de prueba Anotar con @Test los métodos de prueba Nombre con prefijo test- Comprobar resultado con assertcalculasalarioneto testcalculasalarioneto Ejecutar método a probar Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 5

Un caso sencillo Probamos EmpleadoBR.testCalculaSalario Se recomienda un método por caso de prueba public class EmpleadoBRTest { } @Test public void testcalculasalarioneto1() { float resultadoreal = EmpleadoBR.calculaSalarioNeto(2000.0f); float resultadoesperado = 1640.0f; assertequals(resultadoesperado, resultadoreal, 0.01); } Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 6

Ejecución de pruebas Desde línea de comando java -cp./junit.jar junit.swingui.testrunner Desde código Java String[] nombrestest = {EmpleadoBRTest.class.getName()}; junit.swingui.testrunner.main(nombrestest); Desde Eclipse Run As > JUnit test Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 7

Resultados de las pruebas Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 8

Prueba con excepciones Usar la anotación @Test @Test(expected=BRException.class) public void testcalculasalarioneto9() { EmpleadoBR.calculaSalarioNeto(-1.0f); } Usar la instrucción fail() @Test public void testcalculasalarioneto9() { try { EmpleadoBR.calculaSalarioNeto(-1.0f); fail("se esperaba excepcion BRException"); } catch(brexception e) {} } Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 9

Fixtures Elementos fijos Se reutilizan en diferentes pruebas @Before Antes de cada test @After Después de cada test @BeforeClass Antes de todos los tests @AfterClass Después de todos los tests Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 10

Suite de pruebas Agrupa pruebas import junit.framework.test; import junit.framework.testcase import junit.framework.testsuite public class MyTestSuiteRunner extends TestCase { } public static Test suite() { TestSuite suite = new TestSuite(); suite.addtestsuite(clazztotesta.class); suite.addtestsuite(clazztotestb.class); return suite } Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 11

Ventajas Framework estándar para pruebas Batería de pruebas reutilizables Permite realizar pruebas de regresión Interfaz para presentación de resultados Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 12

Objetos mock Debemos poder predecir el resultado de los métodos a probar Algunos componentes dificultan las pruebas DAOs Proxys etc... Toman como entrada datos que no controlamos Solución: Sustituir estos componentes por impostores mocks Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 13

Implementación de los mock IEmpleadoDAO JDBCEmpleadoDAO MockEmpleadoDAO @Override IEmpleadoDAO getempleadodao() { return new MockEmpleadoDAO(); } Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 14

Pruebas de base de datos Si nuestro objetivo es probar el DAO no tendría sentido sustituirlo por un mock Restablecer el estado de la BD antes de cada prueba (fixtures) Utilizar DBUnit http://www.dbunit.org/ Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 15

Test-Driven Development Para cada funcionalidad a implementar Escribir las pruebas y comprobar que fallan Escribir el mínimo código para que funcionen Refactorizar el código escrito También conocida como red-green-refactor Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 16

Ventajas de TDD Código probado desde el principio Todo el código bajo el control de las pruebas No es necesario depurar código complejo Código de gran calidad Alta confianza en el código desarrollado Lenguaje Java Avanzado 2012-2013 Depto. Ciencia de la Computación e IA Pruebas con Junit - 17

Preguntas...? 2012-2013 Depto. Ciencia de la Computación e IA