PDF de programación - Aprendizaje Java acelerado por casos de prueba JUnit

Imágen de pdf Aprendizaje Java acelerado por casos de prueba JUnit

Aprendizaje Java acelerado por casos de prueba JUnitgráfica de visualizaciones

Actualizado el 18 de Mayo del 2018 (Publicado el 3 de Mayo del 2017)
1.188 visualizaciones desde el 3 de Mayo del 2017
450,7 KB
14 paginas
Creado hace 13a (28/10/2010)
de prueba JUnit

[email protected]

Universidad de Costa Rica

Aprendizaje Java acelerado por casos

Escuela de Ciencias de la Computación e Informática

Agenda
• JUnit
 Ventajas de DrJava
 2 Ejemplos
 Rellene con su algoritmo
 Indentación
 Análisis
 Conclusiones



UCR

Aprendizaje Java acelerado por casos de prueba JUnit

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

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://es.wikipedia.org/wiki/JUnit ]

[ http://JUnit.org/ ]



UCR

Aprendizaje Java acelerado por casos de prueba JUnit

Escuela de Ciencias de la Computación e Informática

[email protected]

Universidad de Costa Rica
Problemas Java

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



UCR

Aprendizaje Java acelerado por casos de prueba JUnit

Escuela de Ciencias de la Computación e Informática

[email protected]

Universidad de Costa Rica
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 )



UCR

Aprendizaje Java acelerado por casos de prueba JUnit

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

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;
}



UCR

Aprendizaje Java acelerado por casos de prueba JUnit

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

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;
}



UCR

// 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 ); }
}
}



Aprendizaje Java acelerado por casos de prueba JUnit

Escuela de Ciencias de la Computación e Informática

[email protected]

Universidad de Costa Rica
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!



UCR

Aprendizaje Java acelerado por casos de prueba JUnit

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

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.



UCR

// 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) ) );



Aprendizaje Java acelerado por casos de prueba JUnit

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

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



UCR

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 ]



Aprendizaje Java acelerado por casos de prueba JUnit

Escuela de Ciencias de la Computación e Informática

[email protected]

Universidad de Costa Rica
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



UCR

Aprendizaje Java acelerado por casos de prueba JUnit

Escuela de Ciencias de la Computación e Informática

[email protected]

Universidad de Costa Rica
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 !!!



UCR
  • Links de descarga
http://lwp-l.com/pdf3296

Comentarios de: Aprendizaje Java acelerado por casos de prueba JUnit (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad