PDF de programación - Sesión 4: Pruebas con JUnit

Imágen de pdf Sesión 4: Pruebas con JUnit

Sesión 4: Pruebas con JUnitgráfica de visualizaciones

Publicado el 2 de Febrero del 2019
442 visualizaciones desde el 2 de Febrero del 2019
134,8 KB
18 paginas
Creado hace 11a (26/09/2012)
Experto Universitario Java Enterprise

Lenguaje Java Avanzado

Sesión 4: Pruebas con JUnit

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



Experto Universitario Java Enterprise

Í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



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

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

/test

org.especialistajee.tienda.bo.EmpleadoBR

org.especialistajee.tienda.bo.EmpleadoBRTest

Lenguaje Java Avanzado

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

Pruebas con Junit - 4



Experto Universitario Java Enterprise

Método de prueba

• Anotar con @Test los métodos de prueba

calculaSalarioNeto

testCalculaSalarioNeto

• Nombre con prefijo test-

• Ejecutar método a probar

• Comprobar resultado con assert-

Lenguaje Java Avanzado

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

Pruebas con Junit - 5



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

Resultados de las pruebas

Lenguaje Java Avanzado

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

Pruebas con Junit - 8



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

Fixtures

• Elementos fijos

• Se reutilizan en diferentes pruebas

@Before

@After

Antes de cada test

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



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

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



Experto Universitario Java Enterprise

¿Preguntas...?

© 2012-2013 Depto. Ciencia de la Computación e IA
  • Links de descarga
http://lwp-l.com/pdf15048

Comentarios de: Sesión 4: Pruebas con 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