• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Junit y Jmock
 

Junit y Jmock

on

  • 2,028 views

 

Statistics

Views

Total Views
2,028
Views on SlideShare
2,028
Embed Views
0

Actions

Likes
0
Downloads
34
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Junit y Jmock Junit y Jmock Presentation Transcript

    • JUnit JMock
    • Temario
      • Test Unitarios, importancia
      • TDD (Desarrollo guiado por tests)
      • Framework JUnit para testeo unitario
      • JMock
        • ¿Qué es?
        • Ejemplo
    • ¿Porqué usar Test Unitarios? Sistema Módulo 1 Módulo 2 Módulo 3 Módulo 4
    • Tests Unitarios
      • La idea es escribir casos de prueba para cada función no trivial o método, de forma que cada caso de prueba sea independiente del resto.
      • Un mismo método puede tener varios casos de prueba, por las distintas respuestas satisfactorias o de error que pudiera entregar.
    • Tests Unitarios, Características
      • Automatizable : en la ejecución de un caso de prueba no debe intervenir el desarrollador (Integración Continua)
      • Completas : se debe desarrollar tantos casos de prueba como para cubrir la mayor cantidad de código (Code Coverage, ej: Sonar)
      • Repetibles : la idea es desarrollar los casos de prueba una vez y que se puedan ejecutar tantas veces se quiera, para validar que ante un mismo escenario la respuesta deba ser la misma.
      • Independientes : la ejecución de una prueba no debe afectar la ejecución de otra. Es mas fácil de mantener y si hay algún error, este no se acarreará para los siguientes casos de prueba.
    • Test-Driven Development (TDD)
      • Es una técnica usada para desarrollar un mejor software de forma mas rápida.
      • TDD se basa en la siguiente idea:
      • Escribir los test para tu código antes que escribas el código.
      • La idea principal es que los requisitos del sistema sean traducidos a pruebas, de este modo, cuando las pruebas pasen, se garantizará que los requisitos se hayan implementado correctamente.
    • Procedimientos de TDD
      • Elegir un requisito
      • Escribir una prueba : el programador debe entender claramente las especificaciones y los requisitos de la funcionalidad que está por implementar. Este paso fuerza al programador a tomar la perspectiva de un cliente considerando el código a través de sus interfaces .
      • Verificar que la prueba falla
      • Escribir la implementación (de forma sencilla)
      • Ejecutar las pruebas automatizadas
      • Eliminación de duplicación (refactoring)
      • Actualización de la lista de requisitos
    • Framework JUnit para testeo unitario
      • JUnit es un conjunto de clases (framework) que permite realizar la ejecución de clases Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los métodos de la clase se comporta como se espera.
      • Sirve también para cuando se modifica una parte del código y se necesita saber si la modificación no altera la funcionalidad.
    • Métodos assert… Método assertTrue(expresión) assertFalse(expresión) assertEquals(esperado,real) assertNull(objeto) assertNotNull(objeto) assertSame(objeto_esperado,objeto_real) assertNotSame(objeto_esperado,objeto_real) fail()   assertArrayEquals(new double[] {1.0, 2.0}, new double[] {1.0, 2.0}, 0.01)
    • Ejemplos con JUnit import junit.framework.*; /** * Un test de ejemplo sobre la clase String. */ public class EjemploTest extends TestCase { public void test Concat() { String s = "hola"; String s2 = s.concat(" que tal"); assertTrue (s2.equals("hola que tal")); } }
    • Ejemplos con JUnit public void testIndiceNoValido() { String s = "mensaje"; try { char c = s.charAt(-5); fail ("Debería haber lanzado una excepción"); } catch (IndexOutOfBoundsException e) { // si sale por aquí es que la prueba salió bien } }
    • Ejemplos con JUnit
    • JMock ¿Qué es? JMock es un API para pruebas unitarias en Java, que utiliza JUnit para hacer algunas operaciones. Para realizar pruebas a veces necesitamos que el método se comunique con otras clases para realizar su función. Entonces debemos crear la clase en primer lugar, pero esto se aparta de la idea del TDD.  Para manejar estas situaciones existen algunas herramientas como JMock e EasyMock, que puede simular los objetos que interactúan con el método, por lo que no necesitamos crear un objeto real para terminar las pruebas.
      • Las ventajas de hacer pruebas con “mocks” son:
        • Evitamos crear objetos ad-hoc para el contexto de la prueba que, además, pueden introducir u ocultar defectos.
        • Podemos probar el comportamiento de nuestro objeto.
        • Esto último es especialmente necesario en el caso de componentes a los que no podamos decirle assertEquals, y que debamos comprobar que interactúa con sus colaboradores como se haya definido.
      JMock
    • Ejemplos JMock
      • Se necesita crear una aplicación que dependiendo de la hora, devuelva el saludo correcto: Buenos Días, Buenas Tardes y Buenas Noches.
      • De acuerdo a los procedimientos de TDD, primero debemos escribir la prueba:
          • public void testSaludar(){
          • Saludo s = new Saludo(); String saludoFinal = s.decirSaludo("compañeros");
          • //Comparar el resultado con el resultado esperado
          • assertEquals("Buenas Tardes, compañeros", saludoFinal);
      •    }
    • Ejemplos JMock
      • import org.jmock.Expectations;
      • import org.jmock.integration.junit3.MockObjectTestCase;
      • public class PruebaSaludo extends MockObjectTestCase{
      • public void testSaludar() {
      • //Se simula la clase SaludoTiempo utilizando tecnología de reflection
      • //se debe declarar como final, ya que será utilizado en una clase interna
      • final SaludoTiempo st = mock(SaludoTiempo.class);
      • Saludo s = new Saludo();
      • s.setSt(st);
          • //Se setean las expectations para el objeto mock
          • checking( new Expectations() {{
          • //El objeto mock será llamado una vez y se define que debe retornar "Buenas Tardes"
          • one(st).getSaludo(); will( returnValue("Buenas Tardes"));
          • }});
          • String saludoFinal = s.decirSaludo("compañeros");
          • //Comparar el resultado con el resultado esperado
          • assertEquals("Buenas Tardes, compañeros", saludoFinal);
        • }
      • }
      • https://sites.google.com/a/pintailconsultingllc.com/java/jmock-examples
      • http://testingalittle.blogspot.com/search/label/JMock%202%2B
      Más Ejemplos JMock