JUnit. JUnit registra si es falso el valor retornado por la función evaluada Así se ha detectado una falla

Documentos relacionados
Aprendizaje Java acelerado por casos de prueba JUnit

Pruebas. Una introducción práctica. Javier Gutiérrez sirve de algo? Ariane segundos después explotó.

B. APÉNDICE: ALGORITMOS DE ORDENACIÓN EN JAVA. 9 Feb César Vaca Rodríguez, Dpto.Informática, UVa 103

Práctica #4: Uso de control de flujo

Tema 15: Aserciones 0

Estructuras de control selectivas

Segundo Certamen Tiempo: 100 minutos

Universidad de los Andes Ingeniería de Sistemas y Computación. ISIS1205 Algorítmica y Programación 2. Hoja de trabajo teórica Nivel 7 (N7-EE)

Curso Informática Lección 4. Instrucciones de control

Formato para prácticas de laboratorio

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

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

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Pruebas unitarias JUnit

Práctica #4: Uso de control de flujo

Definición. Mónica E. García García Feb 07

Java desde Consola Utilizando Java sin Path

INGENIERÍA DEL SOFTWARE II Práctica 1. Univ. Cantabria Fac. de Ciencias Carlos Blanco, Juan Hernández

Concurso: Cuánto sabes de JAVA?

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

CLAVE EXAMEN: a cd. c u r s o r = c u r s o r. g e t S i g u i e n t e ( ) ; p o s i c i o n ++;

JUNIT. Pruebas Unitarias

2ª Parte: Problemas (5 puntos sobre 10)

Programación II. Mario Aldea Rivas Programación II 25/03/11 1

Programación Tema 8: Estilo y pruebas. Programación DIT-UPM

Capítulo 4. Control de flujo. Continuar

INTRODUCCION A LA PROGRAMACION EN JAVA

1. (1 punto) Dado el siguiente fragmento de programa:

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIERIA EN SISTEMAS

Estructuras de Datos Clase 14 Árboles binarios de búsqueda

FUNCIONES O MÉTODOS. Algoritmia y Programación

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

Parte I: Programación en un lenguaje orientado a objetos

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Java Básico. Métodos estáticos

Tema 4- Representación Enlazada

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre

Variables Globales: Estas se crean durante toda la ejecución del programa, y son globales, ya que pueden ser llamadas, leídas, modificadas, etc;

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Introducción a la Programación Métodos

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

PLANTEL 2 CIEN METROS ELISA ACUÑA ROSSETTI ACADEMIA DE TECNOLOGIA DE LA INFORMACION Y DE LA COMUNICACION

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

Lenguaje de Programación MSc. Daniel Alejandro Yucra Sotomayor

INTROD. A ECLIPSE. C L A S E P R Á C T I C A N º 1 E s t r u c t u r a s d e D a t o s INTRODUCCIÓN

Capitulo 3. Test Driven Development

Práctica #3: Uso de Clases y Métodos

HERENCIA. Problema: Reparar el el coche. Jesús (Valencia) Luis, Mecánico (Valencia) Antonio, Servicio Técnico Ferrari (Madrid)

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Examen escrito de Programación 1

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa

Prueba N o 1. Programación II

Estructura de datos y Programación

Soluciones Kata TDD. Solución requisito 1

CURSO DE PROGRAMACIÓN DESDE CERO CON UNITY BIENVENIDOS!

Pruebas de unidad con JUnit

Fundamentos de Computadores y Lenguajes

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

CLASE ARRAYS DEL API JAVA. MÉTODOS PARA ARRAYS EQUALS (COMPARAR), COPYOF (COPIAR), FILL (RELLENAR). EJEMPLOS. (CU00676B)

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Compiladores e Intérpretes

JAVA NATIVE INTERFACE (JNI) INVOCANDO C/C++ DESDE JAVA

PARTE TEÓRICA - TEST [2,5 PUNTOS]:

Lenguajes de programación. Algoritmos y Estructuras de Datos I. Lenguajes compilados. Lenguajes compilados

PROCESADORES DEL LENGUAJES Enero 2018

Ing. Néstor Raúl Suarez Perpiñan Página 1 de 8

Bloque II. Elementos del lenguaje de programación Java

Examen Teórico Convocatoria de Junio de 2012

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Práctica 11f. Práctica 11f. José M. Ordax

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

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Bloque II. Elementos del lenguaje de programación Java

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Diseño de tipos Igualdad, representación, código, copia y relación de orden

JUnit 3 vs. JUnit 4. David Alonso Ríos. Facultad de Informática Universidade da Coruña 2008/2009

4/14/2010. Objetivos. Que es JAVA. JAVA como plataforma. Reglas Sintácticas y de Codificación Básicas de JAVA

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

k. Son métodos de la clases y respectivamente, que analiza un para devolver un entero con

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED)

Java en 2 horas. Rodrigo Santamaría

Práctica 11e. Práctica 11e. José M. Ordax

INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN JAVA

SESIÓN DE EJERCICIOS E1

Arrays, Cadenas y Vectores Tipos Genéricos

FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO

Tecnologías de Programación Web Dr. Diego C. Martínez. Depto de Cs e Ing. de la Computación Universidad Nacional del Sur.

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Los Constructores(1)

PROGRAMACIÓN GENÉRICA

Transcripción:

Aprendizaje Java acelerado por casos de prueba JUnit Agenda JUnit Ventajas de DrJava 2 Ejemplos Rellene con su algoritmo Indentación Análisis Conclusiones

JUnit Conjunto de bibliotecas creadas por Erich Gamma y Kent Beck que son utilizadas en programación para hacer pruebas unitarias de aplicaciones Java. JUnit registra si es falso el valor retornado por la función evaluada Así se ha detectado una falla asserttrue( 8 == Bib.sume(3,5) ); // JUnit registra si falla JUnit tiene visualizadores de los resultados (runners), en modo texto, gráfico (AWT o Swing) o como tarea en Ant [ http://junit.org/ ] [ http://es.wikipedia.org/wiki/junit ]

Problemas Java Complejidad de la sintaxis Ambiente de programación Lenguajes alternativos Ruby + Python

Ventajas de DrJava Es de uso libre Es fácil de obtener Se puede usar desde una llave maya 1) Instale JDK - DrJava requiere el sistema Java-JDK ya instalado - http://java.sun.com ==> JDK ==> [[ Downloads ]] ==> Java SE ==> JDK 6 Update 16 (o superior) Java SE Development Kit (JDK) 2) Instale http://www.drjava.org ==> [[ Download Windows App ]] ( Primero Algoritmos ~~ Primero Objetos )

sumador() /** Retorna la suma de los valores de VEC[]. */ public static int sumador( int VEC[] ) { if ( VEC.equals(null) ) { // VEC[] no existe todavia return 0; else if ( VEC.length==0 ) { return 0; int suma = 0; // acumulador {{{ /******************************\ *** RELLENE CON SU ALGORITMO *** \******************************/ return suma;

{ Solución: sumador() //... int suma = 0; // acumulador {{{ /******************************\ *** RELLENE CON SU ALGORITMO *** \******************************/ final int N = VEC.length; for ( int i=0; i<n; ++i ) { suma = suma + VEC[i]; return suma;

// TestSumador.java import junit.framework.*; public class TestSumador extends TestCase { /** Suma de los valores de {@code VEC(int[]). */ public static int sumador( int VEC[] ) { //... int suma = 0; // acumulador {{{ /******************************\ *** RELLENE CON SU ALGORITMO *** \******************************/ return suma; /** test -> {@code sumador(). */ public void test_sumador() { { int V[] = { 1,2,3,4,5 ; asserttrue( sumador(v) == 15 ); { int V[] = { 2,2,2,2,2 ; asserttrue( sumador(v) == 10 ); { int V[] = { 8,0,2,1,9 ; asserttrue( sumador(v) == 20 ); { int V[] = { 4,3,2,1,0 ; asserttrue( sumador(v) == 10 ); { int V[] = { 0,1,2,3,4 ; asserttrue( sumador(v) == 10 );

JUnit <==> DrJava Botón [Run] vs [Test] Run: usado para correr programas Test: activa pruebas JUnit Recuerde usar DrJava como platforma de desarrollo. También recuerde pulsar el botón [Test] para activar el programa usando pruebas tipo JUnit (es más complicado ejecutar el programa activando el botón "run"). Recuerde: agregue su algoritmo dentro del bloque marcado "{ *** RELLENE CON SU ALGORITMO *** "... No modifique ninguna otra parte del programa!

Error Amarillo Es un error de sintaxis Java Es un error en el algoritmo Es una falla detectada al ejecutar el algoritmo Si el algoritmo escrito por el estudiante es incorrecto, la ejecución JUnit del programa de prueba produce un error que aparece en amarillo en DrJava. Lo mismo ocurre si el programa tiene un error de sintaxis.

// TestAlVerres.java: Segunda tarea programada /** Retorna una copia de {@code V[] con los valores invertidos. * alverres( { 1, 2, 3 ) retorna { 3, 2, 1. */ public static int[] alverres( int V[] ) { if ( V == null ) { return null; int size = V.length; // dimensión de V[] y de R[] int R[] = new int[ size ]; // R[] es la copia invertida de V[] int i, j; // indices para V[] && R[] {{{ /******************************\ *** RELLENE CON SU ALGORITMO *** \******************************/ // System.out.println( "R" + vstring(r) ); return R; static int V1234567[] = { 1, 2, 3, 4, 5, 6, 7 ; static int V7654321[] = { 7, 6, 5, 4, 3, 2, 1 ; static int V0101010[] = { 0, 1, 0, 1, 0, 1, 0 ; asserttrue( soniguales( V1234567, alverres(v7654321) ) ); asserttrue( soniguales( V0101010, alverres(v0101010) ) );

Problema: Indentación j = size-1; for (i=0; i<size; i++) { R[i] = V[j]; j--; Errores Creativos De espaciado De indentación Del profesor sino cubre todos los casos de la prueba unitaria Es necesario insistir en que la indentación es importante

for(j=0,i=v.length-1; j<v.length; j++,i--) R[j]=V[i]; for (i=size-1,j=0; i>=0 ;i=i-1,j=j+1) { R[j]=V[i]; for ( i = 0, j = size - 1; i < size; ++i, --j) { R[j] = V[i]; for(int f=0;f<size;f++){ R[f] = V[size-f]; System.out.println( "R" + vstring(r) ); [ http://www.di-mare.com/adolfo/p/indentacion.htm ]

Análisis final Cuestionario al final del curso: Los estudiantes olvidan la diferencia entre un programa [Test] y uno [Run] Les parece extraño que el libro de texto no hablara de ejemplos JUnit Retos docentes: Problemas por copias pirata de soluciones en Internet Quienes se quedan rezagados casi siempre pierden el curso Problemas con la Indentación Muchas veces a los estudiantes les cuesta ver el bosque porque se concentran en las hojas

Conclusiones JUnit sirve para limitar el contexto de trabajo Java Menor complejidad sintáctica acelera el aprendizaje de Java Esta técnica se puede usar en otros lenguajes como C++ No es complicado hacer más ejemplos [ http://www.di-mare.com/adolfo/cursos/2010-2/pi-ta-3.htm ] [ http://www.di-mare.com/adolfo/cursos/2010-2/p1-ta-4.htm ] Muchas gracias!!!