SlideShare una empresa de Scribd logo
Tests Unitarios
con JUnit 4
Paulo Clavijo Esteban - Mayo 2012
clavijo_pau@ingenieriadesoftware.com
Tests Unitarios con JUnit 4
                                        Paulo Clavijo Esteban - Mayo 2012




Agenda
●   Tipos de Tests
●   Introducción a JUnit
●   Test Class
●   Test Methods
●   Condiciones de aceptación Assert
●   Fixture Methods
●   Test Suites
●   Tests de Timeout
●   Tests de manejo de excepciones
●   Test Runners
●   Tests Parametrizados
●   AssertThat y Hamcrest
●   Buenas Prácticas
●   Tipos de validación
Tests Unitarios con JUnit 4
                                             Paulo Clavijo Esteban - Mayo 2012




Tipos de Tests                                           (1/3)

●   Clasificación por Nivel
    ○   Tests Unitarios.
    ○   Tests de Integración.
    ○   Tests de Sistema.
    ○   Tests de Integración de Sistemas.


●   Pruebas Funcionales
    ○   Tests Funcionales.
    ○   Tests de Aceptación.
    ○   Tests de Regresión.
    ○   Alpha testing.
    ○   Beta testing.
    ○   ...
Tests Unitarios con JUnit 4
                                               Paulo Clavijo Esteban - Mayo 2012




Tipos de Tests                                             (2/3)

●   Pruebas No-funcionales
    ○   Tests de Rendimiento
    ○   Tests de Resistencia, Carga, Stress
    ○   Tests de Seguridad
    ○   Tests de Usabilidad
    ○   Tests de Mantenibilidad
    ○   ...
Tests Unitarios con JUnit 4
                                                     Paulo Clavijo Esteban - Mayo 2012




Tipos de Tests                                                   (3/3)

●   Clasificación típica en un entorno TDD.
             Desarrollador     Dueño del Producto




                Tests
               Unitarios            Tests de
                                   Aceptación


                                      Tests
                                   Funcionales
            Tests de Sistema


                Tests de
              Integración
Tests Unitarios con JUnit 4
                                                  Paulo Clavijo Esteban - Mayo 2012




Tests Unitarios                                               (1/3)

Los tests unitarios son una forma de probar el correcto
funcionamiento de un módulo o una parte del sistema.
Con el fin de asegurar el correcto funcionamiento de todos
los módulos por separado y evitar así errores futuros en el
momento de la integración de todas sus partes.

La idea es escribir casos de prueba para cada función no
trivial o método en el módulo, de forma que cada caso sea
independiente del resto.
Tests Unitarios con JUnit 4
                                            Paulo Clavijo Esteban - Mayo 2012




Tests Unitarios                                         (2/3)

Ventajas:
  1. Fomentan el cambio.
  2. Simplifica la integración.
  3. Documentan el código.
  4. Separación de la interfaz y la implementación.
  5. Los errores quedan más acotados y son más
     fáciles de localizar.
Tests Unitarios con JUnit 4
                                           Paulo Clavijo Esteban - Mayo 2012




Tests Unitarios                                        (3/3)

● Un buen test unitario tiene que ser repetible y
  debe poder ejecutarse de forma automática.

● Las Pruebas Automáticas reducen el riesgo y
  ahorran el coste de repetir los test
  manualmente.

● Los equipos ágiles, las utilizan como ayuda
  para responder al cambio de forma rápida y a
  un coste eficiente.
Tests Unitarios con JUnit 4
                                              Paulo Clavijo Esteban - Mayo 2012




Introducción a JUnit                                      (1/3)

● JUnit es una librería Java que nos
  ayudará en la realización de nuestros
  tests automáticos de prueba.

● Creado por Erich Gamma y Kent Beck, es
  uno de los frameworks de tests unitarios
  conocidos colectivamente como xUnit,
  originados por SUnit.
    ○   C (CUnit)          ○   Javascript (JSUnit)
    ○   C++ (CPPUnit)      ○   Objective-C (OCUnit)
    ○   Fortran (fUnit)    ○   PHP (PHPUnit)
    ○   Delphi (DUnit)     ○   ...
Tests Unitarios con JUnit 4
                                               Paulo Clavijo Esteban - Mayo 2012




Introducción a JUnit                                       (2/3)

● JUnit proporciona:
  ○ Afirmaciones para verificar resultados.
  ○ Anotaciones para definir métodos de prueba.
  ○ Anotaciones para definir métodos adicionales pre y
    post prueba.
  ○ Controlar excepciones, tiempos de espera.
  ○ Parametrización de datos.
  ○ Diferentes Runners para guiar la ejecución de las
    pruebas.
  ○ ...
Tests Unitarios con JUnit 4
                                        Paulo Clavijo Esteban - Mayo 2012




Introducción a JUnit                                (3/3)

● Los conceptos básicos de JUnit son:
  ○ Test class
     ○ Test method
        ●   Assert
     ○ Fixture method
  ○ Test suite
  ○ Test runner
Tests Unitarios con JUnit 4
                                                Paulo Clavijo Esteban - Mayo 2012




Test Class
Una Test Class es una clase java que contendrá un conjunto
de Test Methods.
Por ejemplo, para probar los métodos de una clase
Calculadora creamos la clase CalculadoraTest.

          import org.junit.Test;

          public class CalculadoraTest {

              @Test
              public void testXXX() {
                  ...
              }

          }
Tests Unitarios con JUnit 4
                                                             Paulo Clavijo Esteban - Mayo 2012




Test Methods                                                             (1/2)

Los métodos de prueba deben indicarse con la anotación
@Test.
Tienen que ser públicos, sin parámetros y devolver void.

       import org.junit.Test;

       public class CalculadoraTest {

           @Test
           public void testSuma() {
               Calculadora calculadora = new CalculadoraImpl();
               double res = calculadora.suma(1, 1);
               assertEquals(2, res, 0);
           }
       }


JUnit crea una nueva instancia de la test class antes de
invocar a cada @Test method.
Tests Unitarios con JUnit 4
                                                           Paulo Clavijo Esteban - Mayo 2012




Test Methods                                                           (2/2)

Los métodos de test los creamos siguiendo el patrón AAA:
   1. Arrange (Preparar)
   2. Act (Actuar)
   3. Assert (Afirmar)

         @Test
         public void testSuma() {
             // Arrange
             Calculadora calculadora = new CalculadoraImpl();
             // Act
             double res = calculadora.suma(1, 1);
             // Assert
             assertEquals(2, res, 0);
         }
Tests Unitarios con JUnit 4
                                                                     Paulo Clavijo Esteban - Mayo 2012




Condiciones de aceptación Assert
Para realizar validaciones en nuestros métodos de prueba,
utilizamos las condiciones de aceptación assertXXX(), que
proporciona la clase Assert de JUnit.

Ejemplos:

   assertEquals("message", A, B)   Validar la igualdad de los objetos A y B,
                                   utiliza el método equals().

   assertSame("message", A, B)     Validar que A y B son el mismo objeto,
                                   utiliza el operador ==.

   assertTrue("message", A)        Validar que la condición A es true.

   assertNotNull("message", A)     Validar que el objeto A no es nulo.
Tests Unitarios con JUnit 4
                                                           Paulo Clavijo Esteban - Mayo 2012




Fixture Methods
Las clases de tests tienen que programarse eficientemente
y refactorizarse cuando sea necesario.
JUnit nos proporciona anotaciones para definir métodos
adicionales pre/post test. Mediante los que podemos
inicializar o finalizar elementos comunes, evitar
duplicidades, preparar datos, etc.
                         public class CalculadoraTest {
                              Calculadora calculadora;
 @BeforeClass                @Before
 @Before                     public void inicializa() {
                                  calculadora = new CalculadoraImpl();
                             }
 @After
                             @Test
 @AfterClass                 public void testSuma() {
                                   double res = calculadora.suma(1, 1);
                                   assertEquals(2, res, 0);
                             }
                         }
Tests Unitarios con JUnit 4
                                                   Paulo Clavijo Esteban - Mayo 2012




Tests de Timeout
Podemos realizar sencillos test de rendimiento verificando
que un test no exceda un tiempo límite de ejecución.
Para ello utilizamos el parámetro timeout.


             @Test(timeout=100)
             public void testProcessTimeout() {
                ...
             }



El test fallará, si se demora más de 100 milisegundos.
Tests Unitarios con JUnit 4
                                                  Paulo Clavijo Esteban - Mayo 2012




Tests de manejo de excepciones
Si estamos probando un método que puede lanzar
excepciones, nos es de interés poder verificar, que para las
condiciones oportunas, nuestro código lanza la excepción
esperada.
Para ello utilizamos el parámetro expected.

    @Test(expected=IllegalArgumentExcepcion.class)
    public void testSumaGetIllegalArgumentException() {
       ...
    }



El test fallará, si no se produce la excepción
IllegalArgumentException.
Tests Unitarios con JUnit 4
                                                  Paulo Clavijo Esteban - Mayo 2012




Ignorar un Test
JUnit proporciona una anotación para indicar que un
determinado test no queremos que se ejecute.

             @Ignore(value="Mensaje")
             @Test
             public void testXXX() {
                ...
             }

Evitar un test no es una buena práctica, pero si en alguna
ocasión nos es necesario es mejor utilizar la anotación
@Ignore a simplemente comentar código.
Es importante indicar siempre una razon por la que
ignoramos un test con el parámetro value.
Tests Unitarios con JUnit 4
                                                                      Paulo Clavijo Esteban - Mayo 2012




Tests Runners
JUnit permite definir cómo se han de ejecutar nuestros
tests, mediante el uso de diferentes Tests Runners.

  org.junit.runners.JUnit4          Runner por defecto.

  org.junit.runners.Parameterized   Ejecuta múltiples veces cada test con
                                    diferentes parámetros.

  org.junit.runners.Suite           Runner de los Test Suite

  org.springframework.test.         Runner de Spring para que los tests
  context.junit4.                   puedan trabajar con el contenedor IoC.
  SpringJUnit4ClassRunner


Utilizamos la anotación @RunWith

      @RunWith(value=Parameterized.class)
      public class CalculadoraImplParameterizedTest {
Tests Unitarios con JUnit 4
                                                                            Paulo Clavijo Esteban - Mayo 2012




    Tests Parametrizados                                                                (1/2)

    Parameterized es un test runner que nos permite ejecutar un
    test múltiples veces con diferentes juegos de parámetros.
@RunWith(value=Parameterized.class)
public class CalculadoraImplParameterizedTest {
     private double esperado, num1, num2;

     @Parameters
     public static Collection<Integer[]> gestTestParameters(){
          return Arrays.asList(new Integer[][] {
               {2, 1, 1}, {3, 2, 1}, {4, 3 ,1},
          });
     }

     public CalculadoraImplParameterizedTest(double esperado, double num1, double num2) {
          this.esperado = esperado;
          this.num1 = num1;
          this.num2 = num2;
     }

     @Test
     public void testSuma() {
           CalculadoraImpl calculadora = new CalculadoraImpl();
           double calculado = calculadora.suma(num1, num2);
           assertEquals(esperado, calculado, 0);
     }
}
Tests Unitarios con JUnit 4
                        Paulo Clavijo Esteban - Mayo 2012




Tests Parametrizados                (2/2)
Tests Unitarios con JUnit 4
                                                      Paulo Clavijo Esteban - Mayo 2012




AssertThat y Hamcrest                                             (1/2)

La librería de matchers Hamcrest nos permite escribir
validaciones de forma más clara y fácil.


    @Test
    public void testSumaHamcrest() {
        CalculadoraImpl calculadora = new CalculadoraImpl();
        double calculado = calculadora.suma(num1, num2);
        assertThat(esperado, is(calculado));
    }




Además, con Hamcrest, los errores en los assert son más
descriptivos.
Tests Unitarios con JUnit 4
                                           Paulo Clavijo Esteban - Mayo 2012




AssertThat y Hamcrest                                  (2/2)

Matches Hamcrest mas comunes:
●   anything
●   is
●   allOf
●   anyOf
●   not
●   instanceOf, isCompatibleType
●   sameInstance
●   notNullValue, nullValue
●   hasProperty
●   hasEntry, hasKey, hasValue
●   hasItem, hasItems
●   closeTo, greaterThan, lessThan
●   containsString, endsWith, startWith
●   ...
Tests Unitarios con JUnit 4
                                                 Paulo Clavijo Esteban - Mayo 2012




Buenas Prácticas
● Un test unitario debe probar exclusivamente el SUT.
● Un test unitario no puede modificar el estado del
    sistema.
●   Un test unitario tiene que ser pequeño, debe probar una
    sola funcionalidad, para un único objeto cada vez.
●   Los nombres de los métodos de test deben ser los más
    claros posibles. No importa que utilicemos nombres
    largos.
●   Indicar un mensaje en todas las llamadas assert.
●   Deja que los tests mejoren el código.
Tests Unitarios con JUnit 4
                                                             Paulo Clavijo Esteban - Mayo 2012




Tipos de validación
● Recapitulando, observamos que en nuestros tests
   unitarios realizamos diferentes tipos de comprobaciones:
   ○ Validación de estado
         assertEquals ( valorEsperado, valorCalculado )

   ○ Validación excepciones
         @Test ( expected=IllegalArgumentException.class )

   ○ Validación rendimiento
         @Test ( timeout=100 )

   ○ Validación interacción
         Utilizaremos Dobles (Mocks, Stubs, etc)
Tests Unitarios con JUnit 4
                                                                        Paulo Clavijo Esteban - Mayo 2012




Caso de ejemplo                                                                     (1/5)

● Una Calculadora de Impuestos.


  public interface CalculadoraImpuestos {
       public double calculaImpuestoMatriculacion(double valorVehiculo, int cv);
  }




 public class CalculadoraImpuestosImpl implements CalculadoraImpuestos {
      public double calculaImpuestoMatriculacion(double valorVehiculo, int cv) {
           ...
      }
 }
Tests Unitarios con JUnit 4
                                                Paulo Clavijo Esteban - Mayo 2012




Caso de ejemplo                                             (2/5)

● Creamos la clase que contendrá las pruebas.

 import static org.junit.Assert.*;

 import org.junit.Test;

 public class CalculadoraImpuestosImplTest {

     @Test
     public void test() {
         fail("Not yet implemented");
     }

 }
Tests Unitarios con JUnit 4
                                                                              Paulo Clavijo Esteban - Mayo 2012




    Caso de ejemplo                                                                       (3/5)

     ●    1ª Regla de negocio:
         Vehículos con menos de 70CV impuesto 9%
     ●    Primer test:
@Test
public void testUsoImpuestoEcologicoParaCvMenor70() {

    CalculadoraImpuestosImpl calculadora = new CalculadoraImpuestosImpl();
    double valorVehiculo = 10000;
    int cv = 65;
    double impuestoEsperado = 900;

    double impuestoCalculado = calculadora.calculaImpuestoMatriculacion(valorVehiculo, cv);

   assertEquals("Impuesto para vehiculos de menos de 70 CV debería ser del 9%",
impuestoEsperado, impuestoCalculado, 0);

}
Tests Unitarios con JUnit 4
                                                             Paulo Clavijo Esteban - Mayo 2012




Caso de ejemplo                                                          (4/5)

●   2ª Regla de negocio:
        Un vehículo no puede tener 0CV

●   Segundo test:

@Test(expected=IllegalArgumentException.class)
public void test0CvGetIllegalArgumentException() {
   CalculadoraImpuestosImpl calculadora = new CalculadoraImpuestosImpl();
   calculadora.calculaImpuestoMatriculacion(100.0, 0);
}
Tests Unitarios con JUnit 4
                                                                                           Paulo Clavijo Esteban - Mayo 2012




    Caso de ejemplo                                                                                    (5/5)

    ●   Podemos refactorizar la clase de test para evitar
        duplicidad de código.
public class CalculadoraImpuestosImplTest {
      private CalculadoraImpuestosImpl calculadora;

        @Before
        public void inicializa() {
              calculadora = new CalculadoraImpuestosImpl();
        }

        @After
        public void finaliza() {
               calculadora = null;
        }

      @Test
      public void testUsoImpuestoEcologicoParaCvMenor70() {
            double valorVehiculo = 10000;
            int cv = 65;
            double impuestoEsperado = 900;
            double impuestoCalculado = calculadora.calculaImpuestoMatriculacion(valorVehiculo, cv);
            assertEquals("Impuesto para vehiculos de menos de 70 CV debería ser del 9%" impuestoEsperado,
                                                                                     ,
impuestoCalculado, 0);
      }

        @Test(expected=IllegalArgumentException.class)
        public void test0CvGetIllegalArgumentException() {
              calculadora.calculaImpuestoMatriculacion(100.0, 0);
        }
}
Tests Unitarios con JUnit 4
                                           Paulo Clavijo Esteban - Mayo 2012




Temas para otro día ...
●   Dobles de Prueba (Mocks, Stubs)
●   Tests de Integración con JUnit
●   La extensión DBUnit
●   TDD - Desarrollo Dirigido por Tests
Tests Unitarios con JUnit 4
                       Paulo Clavijo Esteban - Mayo 2012




Recursos
●   JUnit Framework
●   Hamcrest
●   EasyMock
●   Mockito
Tests Unitarios con JUnit 4
                                             Paulo Clavijo Esteban - Mayo 2012




Referencias
Libros:
● JUnit In Action (2º Edition) - Manning.
● Java Power Tools - John Ferguson.
● Diseño Ágil Con TDD - Carlos Blé.

Web:
● JUnit Documentacion
● The Hamcrest Tutorial
Sobre el Autor:

Paulo Clavijo Esteban
Software Engineer en ISC
clavijo_pau@ingenieriadesoftware.com

       Blog: www.lintips.com
      Email: paucls@gmail.com

Más contenido relacionado

La actualidad más candente

An Introduction to Unit Test Using NUnit
An Introduction to Unit Test Using NUnitAn Introduction to Unit Test Using NUnit
An Introduction to Unit Test Using NUnitweili_at_slideshare
 
What is JUnit? | Edureka
What is JUnit? | EdurekaWhat is JUnit? | Edureka
What is JUnit? | EdurekaEdureka!
 
White Box Testing
White Box TestingWhite Box Testing
White Box TestingAlisha Roy
 
Estrategias de Pruebas de Software
Estrategias de Pruebas de SoftwareEstrategias de Pruebas de Software
Estrategias de Pruebas de SoftwareLucia Gasperin
 
Test Life Cycle - Presentation - Important concepts covered
Test Life Cycle - Presentation - Important concepts coveredTest Life Cycle - Presentation - Important concepts covered
Test Life Cycle - Presentation - Important concepts coveredSunil Kumar Gunasekaran
 
What is Integration Testing? | Edureka
What is Integration Testing? | EdurekaWhat is Integration Testing? | Edureka
What is Integration Testing? | EdurekaEdureka!
 
TestNG introduction
TestNG introductionTestNG introduction
TestNG introductionDenis Bazhin
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmockkaolong
 
Basic software-testing-concepts
Basic software-testing-conceptsBasic software-testing-concepts
Basic software-testing-conceptsmedsherb
 
Special value testing
Special value testingSpecial value testing
Special value testingBapi Das
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testingikhwanhayat
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.Juan Ravi
 
Integration testing
Integration testingIntegration testing
Integration testingqueen jemila
 

La actualidad más candente (20)

An Introduction to Unit Test Using NUnit
An Introduction to Unit Test Using NUnitAn Introduction to Unit Test Using NUnit
An Introduction to Unit Test Using NUnit
 
Phases of Compiler
Phases of CompilerPhases of Compiler
Phases of Compiler
 
What is JUnit? | Edureka
What is JUnit? | EdurekaWhat is JUnit? | Edureka
What is JUnit? | Edureka
 
White Box Testing
White Box TestingWhite Box Testing
White Box Testing
 
Estrategias de Pruebas de Software
Estrategias de Pruebas de SoftwareEstrategias de Pruebas de Software
Estrategias de Pruebas de Software
 
Introduction to Ada
Introduction to AdaIntroduction to Ada
Introduction to Ada
 
Test Life Cycle - Presentation - Important concepts covered
Test Life Cycle - Presentation - Important concepts coveredTest Life Cycle - Presentation - Important concepts covered
Test Life Cycle - Presentation - Important concepts covered
 
What is Integration Testing? | Edureka
What is Integration Testing? | EdurekaWhat is Integration Testing? | Edureka
What is Integration Testing? | Edureka
 
White box testing
White box testingWhite box testing
White box testing
 
TestNG introduction
TestNG introductionTestNG introduction
TestNG introduction
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmock
 
Types of performance testing
Types of performance testingTypes of performance testing
Types of performance testing
 
Test planning
Test planningTest planning
Test planning
 
Basic software-testing-concepts
Basic software-testing-conceptsBasic software-testing-concepts
Basic software-testing-concepts
 
Special value testing
Special value testingSpecial value testing
Special value testing
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testing
 
Introduction
IntroductionIntroduction
Introduction
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
Integration testing
Integration testingIntegration testing
Integration testing
 

Destacado

La prueba.Mapa Conceptual. Derecho Probatorio
La prueba.Mapa Conceptual. Derecho ProbatorioLa prueba.Mapa Conceptual. Derecho Probatorio
La prueba.Mapa Conceptual. Derecho Probatoriojohast67
 
LA PRUEBA EN EL NUEVO CODIGO PROCESAL PENALe
LA PRUEBA EN EL NUEVO CODIGO PROCESAL PENALeLA PRUEBA EN EL NUEVO CODIGO PROCESAL PENALe
LA PRUEBA EN EL NUEVO CODIGO PROCESAL PENALeJunior Lino Mera Carrasco
 
Wharf residencesfloorplan
Wharf residencesfloorplanWharf residencesfloorplan
Wharf residencesfloorplanskywu26
 
Teoria general de la prueba judicial Tomo I - hernando devis echandia
Teoria general de la prueba judicial Tomo I - hernando devis echandiaTeoria general de la prueba judicial Tomo I - hernando devis echandia
Teoria general de la prueba judicial Tomo I - hernando devis echandiaRuben Rada Escobar
 
Las pruebas y los medios de prueba
Las pruebas y los medios de pruebaLas pruebas y los medios de prueba
Las pruebas y los medios de pruebaJohana Lopez
 
TEORIA GENERAL DE LA PRUEBA
TEORIA GENERAL DE LA PRUEBATEORIA GENERAL DE LA PRUEBA
TEORIA GENERAL DE LA PRUEBAVladimir Platero
 
La prueba en materia penal
La prueba en materia penalLa prueba en materia penal
La prueba en materia penalRogelio Armando
 
Hábeas corpus
Hábeas corpusHábeas corpus
Hábeas corpusiei192lucy
 
Contabilidad General: Práctica y Dinámica Contable - Contabilidad de Activos,...
Contabilidad General: Práctica y Dinámica Contable - Contabilidad de Activos,...Contabilidad General: Práctica y Dinámica Contable - Contabilidad de Activos,...
Contabilidad General: Práctica y Dinámica Contable - Contabilidad de Activos,...Janeth Lozano Lozano
 
Primer Paquete Económico 2017 Zacatecas (2/9)
Primer Paquete Económico 2017 Zacatecas (2/9)Primer Paquete Económico 2017 Zacatecas (2/9)
Primer Paquete Económico 2017 Zacatecas (2/9)Zacatecas TresPuntoCero
 
Onderzoeksrapport acrs v3.0_definitief
Onderzoeksrapport acrs v3.0_definitiefOnderzoeksrapport acrs v3.0_definitief
Onderzoeksrapport acrs v3.0_definitiefrloggen
 
Schrijven voor het web
Schrijven voor het webSchrijven voor het web
Schrijven voor het webSimone Levie
 
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA... ..
 
Estrategias competitivas básicas
Estrategias competitivas básicasEstrategias competitivas básicas
Estrategias competitivas básicasLarryJimenez
 
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda..... ..
 

Destacado (20)

La prueba en el proceso penal
La prueba en el proceso penalLa prueba en el proceso penal
La prueba en el proceso penal
 
La prueba.Mapa Conceptual. Derecho Probatorio
La prueba.Mapa Conceptual. Derecho ProbatorioLa prueba.Mapa Conceptual. Derecho Probatorio
La prueba.Mapa Conceptual. Derecho Probatorio
 
Regimen probatorio
Regimen probatorioRegimen probatorio
Regimen probatorio
 
LA PRUEBA EN EL NUEVO CODIGO PROCESAL PENALe
LA PRUEBA EN EL NUEVO CODIGO PROCESAL PENALeLA PRUEBA EN EL NUEVO CODIGO PROCESAL PENALe
LA PRUEBA EN EL NUEVO CODIGO PROCESAL PENALe
 
Wharf residencesfloorplan
Wharf residencesfloorplanWharf residencesfloorplan
Wharf residencesfloorplan
 
Teoria general de la prueba judicial Tomo I - hernando devis echandia
Teoria general de la prueba judicial Tomo I - hernando devis echandiaTeoria general de la prueba judicial Tomo I - hernando devis echandia
Teoria general de la prueba judicial Tomo I - hernando devis echandia
 
Las pruebas y los medios de prueba
Las pruebas y los medios de pruebaLas pruebas y los medios de prueba
Las pruebas y los medios de prueba
 
TEORIA GENERAL DE LA PRUEBA
TEORIA GENERAL DE LA PRUEBATEORIA GENERAL DE LA PRUEBA
TEORIA GENERAL DE LA PRUEBA
 
La prueba en materia penal
La prueba en materia penalLa prueba en materia penal
La prueba en materia penal
 
Hábeas corpus
Hábeas corpusHábeas corpus
Hábeas corpus
 
Contabilidad General: Práctica y Dinámica Contable - Contabilidad de Activos,...
Contabilidad General: Práctica y Dinámica Contable - Contabilidad de Activos,...Contabilidad General: Práctica y Dinámica Contable - Contabilidad de Activos,...
Contabilidad General: Práctica y Dinámica Contable - Contabilidad de Activos,...
 
Primer Paquete Económico 2017 Zacatecas (2/9)
Primer Paquete Económico 2017 Zacatecas (2/9)Primer Paquete Económico 2017 Zacatecas (2/9)
Primer Paquete Económico 2017 Zacatecas (2/9)
 
PMP Sonora Saludable 2010 2015
PMP Sonora Saludable 2010   2015  PMP Sonora Saludable 2010   2015
PMP Sonora Saludable 2010 2015
 
Onderzoeksrapport acrs v3.0_definitief
Onderzoeksrapport acrs v3.0_definitiefOnderzoeksrapport acrs v3.0_definitief
Onderzoeksrapport acrs v3.0_definitief
 
Schrijven voor het web
Schrijven voor het webSchrijven voor het web
Schrijven voor het web
 
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.
 
Estrategias competitivas básicas
Estrategias competitivas básicasEstrategias competitivas básicas
Estrategias competitivas básicas
 
Cápsula 1. estudios de mercado
Cápsula 1. estudios de mercadoCápsula 1. estudios de mercado
Cápsula 1. estudios de mercado
 
Rodriguez alvarez
Rodriguez alvarezRodriguez alvarez
Rodriguez alvarez
 
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...
 

Similar a Tests Unitarios con JUnit 4

Pruebas software con junit ..
Pruebas software con junit ..Pruebas software con junit ..
Pruebas software con junit ..siticfje
 
Introducción y novedades de JUnit 5 (16/01/2018)
Introducción y novedades de JUnit 5 (16/01/2018)Introducción y novedades de JUnit 5 (16/01/2018)
Introducción y novedades de JUnit 5 (16/01/2018)Boni García
 
Ingenieria de sw Junit
Ingenieria de sw JunitIngenieria de sw Junit
Ingenieria de sw Junitpattyand89
 
Introducción y novedades de JUnit 5 (04/07/2018)
Introducción y novedades de JUnit 5 (04/07/2018)Introducción y novedades de JUnit 5 (04/07/2018)
Introducción y novedades de JUnit 5 (04/07/2018)Boni García
 
Jyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc X
 
Pruebas de aceptación 15 11_2013
Pruebas de aceptación 15 11_2013Pruebas de aceptación 15 11_2013
Pruebas de aceptación 15 11_2013dayaorte
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas SoftwareMicael Gallego
 
Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NETAngel Nuñez
 
Aguirre Jimenez
Aguirre JimenezAguirre Jimenez
Aguirre JimenezFARIDROJAS
 
Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Juan Vladimir
 
Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1Jano González
 
Pruebas Automatizadas
Pruebas AutomatizadasPruebas Automatizadas
Pruebas AutomatizadasAngel Nuñez
 
Pruebas-OCW.pdf
Pruebas-OCW.pdfPruebas-OCW.pdf
Pruebas-OCW.pdflgarcias
 
Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfPabloMorales831994
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gioRobert Wolf
 

Similar a Tests Unitarios con JUnit 4 (20)

Pruebas software con junit ..
Pruebas software con junit ..Pruebas software con junit ..
Pruebas software con junit ..
 
Introducción y novedades de JUnit 5 (16/01/2018)
Introducción y novedades de JUnit 5 (16/01/2018)Introducción y novedades de JUnit 5 (16/01/2018)
Introducción y novedades de JUnit 5 (16/01/2018)
 
Ingenieria de sw Junit
Ingenieria de sw JunitIngenieria de sw Junit
Ingenieria de sw Junit
 
Esquemas de pruebas
Esquemas de pruebasEsquemas de pruebas
Esquemas de pruebas
 
Introducción y novedades de JUnit 5 (04/07/2018)
Introducción y novedades de JUnit 5 (04/07/2018)Introducción y novedades de JUnit 5 (04/07/2018)
Introducción y novedades de JUnit 5 (04/07/2018)
 
Jyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc java-cap23 j unit
Jyoc java-cap23 j unit
 
Pruebas de aceptación 15 11_2013
Pruebas de aceptación 15 11_2013Pruebas de aceptación 15 11_2013
Pruebas de aceptación 15 11_2013
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas Software
 
Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NET
 
Aguirre Jimenez
Aguirre JimenezAguirre Jimenez
Aguirre Jimenez
 
Prueba
PruebaPrueba
Prueba
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Conceptos básicos de Unit Test
Conceptos básicos de Unit Test
 
Curso_Pruebas_ee v2.pptx
Curso_Pruebas_ee v2.pptxCurso_Pruebas_ee v2.pptx
Curso_Pruebas_ee v2.pptx
 
Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1
 
Pruebas Automatizadas
Pruebas AutomatizadasPruebas Automatizadas
Pruebas Automatizadas
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Pruebas-OCW.pdf
Pruebas-OCW.pdfPruebas-OCW.pdf
Pruebas-OCW.pdf
 
Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdf
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gio
 

Más de Paulo Clavijo

Consumer-Driven Contract Testing - Workshop - January 2021
Consumer-Driven Contract Testing - Workshop - January 2021Consumer-Driven Contract Testing - Workshop - January 2021
Consumer-Driven Contract Testing - Workshop - January 2021Paulo Clavijo
 
User story slicing exercise
User story slicing exerciseUser story slicing exercise
User story slicing exercisePaulo Clavijo
 
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020Paulo Clavijo
 
Breaking Dependencies Legacy Code - Cork Software Crafters - September 2019
Breaking Dependencies Legacy Code -  Cork Software Crafters - September 2019Breaking Dependencies Legacy Code -  Cork Software Crafters - September 2019
Breaking Dependencies Legacy Code - Cork Software Crafters - September 2019Paulo Clavijo
 
Legacy Code and Refactoring Workshop - Session 1 - October 2019
Legacy Code and Refactoring Workshop - Session 1 - October 2019Legacy Code and Refactoring Workshop - Session 1 - October 2019
Legacy Code and Refactoring Workshop - Session 1 - October 2019Paulo Clavijo
 
Approval Testing & Mutation Testing - Cork Software Crafters - June 2019
Approval Testing & Mutation Testing - Cork Software Crafters - June 2019Approval Testing & Mutation Testing - Cork Software Crafters - June 2019
Approval Testing & Mutation Testing - Cork Software Crafters - June 2019Paulo Clavijo
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019Paulo Clavijo
 
TDD and Simple Design Workshop - Session 1 - November 2018
TDD and Simple Design Workshop - Session 1 - November 2018TDD and Simple Design Workshop - Session 1 - November 2018
TDD and Simple Design Workshop - Session 1 - November 2018Paulo Clavijo
 
Outside-in TDD with Test Doubles
Outside-in TDD with Test DoublesOutside-in TDD with Test Doubles
Outside-in TDD with Test DoublesPaulo Clavijo
 
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018Paulo Clavijo
 
Consumer-Driven Contract Testing
Consumer-Driven Contract TestingConsumer-Driven Contract Testing
Consumer-Driven Contract TestingPaulo Clavijo
 
ATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de AceptaciónATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de AceptaciónPaulo Clavijo
 
Gestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBaseGestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBasePaulo Clavijo
 
Introducción a Spring Roo
Introducción a Spring RooIntroducción a Spring Roo
Introducción a Spring RooPaulo Clavijo
 

Más de Paulo Clavijo (15)

Consumer-Driven Contract Testing - Workshop - January 2021
Consumer-Driven Contract Testing - Workshop - January 2021Consumer-Driven Contract Testing - Workshop - January 2021
Consumer-Driven Contract Testing - Workshop - January 2021
 
User story slicing exercise
User story slicing exerciseUser story slicing exercise
User story slicing exercise
 
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
 
Breaking Dependencies Legacy Code - Cork Software Crafters - September 2019
Breaking Dependencies Legacy Code -  Cork Software Crafters - September 2019Breaking Dependencies Legacy Code -  Cork Software Crafters - September 2019
Breaking Dependencies Legacy Code - Cork Software Crafters - September 2019
 
Legacy Code and Refactoring Workshop - Session 1 - October 2019
Legacy Code and Refactoring Workshop - Session 1 - October 2019Legacy Code and Refactoring Workshop - Session 1 - October 2019
Legacy Code and Refactoring Workshop - Session 1 - October 2019
 
Approval Testing & Mutation Testing - Cork Software Crafters - June 2019
Approval Testing & Mutation Testing - Cork Software Crafters - June 2019Approval Testing & Mutation Testing - Cork Software Crafters - June 2019
Approval Testing & Mutation Testing - Cork Software Crafters - June 2019
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019
 
TDD and Simple Design Workshop - Session 1 - November 2018
TDD and Simple Design Workshop - Session 1 - November 2018TDD and Simple Design Workshop - Session 1 - November 2018
TDD and Simple Design Workshop - Session 1 - November 2018
 
Outside-in TDD with Test Doubles
Outside-in TDD with Test DoublesOutside-in TDD with Test Doubles
Outside-in TDD with Test Doubles
 
Angular and Redux
Angular and ReduxAngular and Redux
Angular and Redux
 
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
 
Consumer-Driven Contract Testing
Consumer-Driven Contract TestingConsumer-Driven Contract Testing
Consumer-Driven Contract Testing
 
ATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de AceptaciónATDD - Desarrollo Dirigido por Test de Aceptación
ATDD - Desarrollo Dirigido por Test de Aceptación
 
Gestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBaseGestión de Cambios de BBDD con LiquiBase
Gestión de Cambios de BBDD con LiquiBase
 
Introducción a Spring Roo
Introducción a Spring RooIntroducción a Spring Roo
Introducción a Spring Roo
 

Último

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaFernando Villares
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.AlejandraCasallas7
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfManuelCampos464987
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx44652726
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareAndres Avila
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfcj3806354
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestrerafaelsalazar0615
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respetocdraco
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxencinasm992
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesPABLOCESARGARZONBENI
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiegoCampos433849
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfjjfch3110
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfAlejandraCasallas7
 

Último (20)

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 

Tests Unitarios con JUnit 4

  • 1. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 clavijo_pau@ingenieriadesoftware.com
  • 2. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Agenda ● Tipos de Tests ● Introducción a JUnit ● Test Class ● Test Methods ● Condiciones de aceptación Assert ● Fixture Methods ● Test Suites ● Tests de Timeout ● Tests de manejo de excepciones ● Test Runners ● Tests Parametrizados ● AssertThat y Hamcrest ● Buenas Prácticas ● Tipos de validación
  • 3. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tipos de Tests (1/3) ● Clasificación por Nivel ○ Tests Unitarios. ○ Tests de Integración. ○ Tests de Sistema. ○ Tests de Integración de Sistemas. ● Pruebas Funcionales ○ Tests Funcionales. ○ Tests de Aceptación. ○ Tests de Regresión. ○ Alpha testing. ○ Beta testing. ○ ...
  • 4. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tipos de Tests (2/3) ● Pruebas No-funcionales ○ Tests de Rendimiento ○ Tests de Resistencia, Carga, Stress ○ Tests de Seguridad ○ Tests de Usabilidad ○ Tests de Mantenibilidad ○ ...
  • 5. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tipos de Tests (3/3) ● Clasificación típica en un entorno TDD. Desarrollador Dueño del Producto Tests Unitarios Tests de Aceptación Tests Funcionales Tests de Sistema Tests de Integración
  • 6. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tests Unitarios (1/3) Los tests unitarios son una forma de probar el correcto funcionamiento de un módulo o una parte del sistema. Con el fin de asegurar el correcto funcionamiento de todos los módulos por separado y evitar así errores futuros en el momento de la integración de todas sus partes. La idea es escribir casos de prueba para cada función no trivial o método en el módulo, de forma que cada caso sea independiente del resto.
  • 7. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tests Unitarios (2/3) Ventajas: 1. Fomentan el cambio. 2. Simplifica la integración. 3. Documentan el código. 4. Separación de la interfaz y la implementación. 5. Los errores quedan más acotados y son más fáciles de localizar.
  • 8. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tests Unitarios (3/3) ● Un buen test unitario tiene que ser repetible y debe poder ejecutarse de forma automática. ● Las Pruebas Automáticas reducen el riesgo y ahorran el coste de repetir los test manualmente. ● Los equipos ágiles, las utilizan como ayuda para responder al cambio de forma rápida y a un coste eficiente.
  • 9. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Introducción a JUnit (1/3) ● JUnit es una librería Java que nos ayudará en la realización de nuestros tests automáticos de prueba. ● Creado por Erich Gamma y Kent Beck, es uno de los frameworks de tests unitarios conocidos colectivamente como xUnit, originados por SUnit. ○ C (CUnit) ○ Javascript (JSUnit) ○ C++ (CPPUnit) ○ Objective-C (OCUnit) ○ Fortran (fUnit) ○ PHP (PHPUnit) ○ Delphi (DUnit) ○ ...
  • 10. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Introducción a JUnit (2/3) ● JUnit proporciona: ○ Afirmaciones para verificar resultados. ○ Anotaciones para definir métodos de prueba. ○ Anotaciones para definir métodos adicionales pre y post prueba. ○ Controlar excepciones, tiempos de espera. ○ Parametrización de datos. ○ Diferentes Runners para guiar la ejecución de las pruebas. ○ ...
  • 11. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Introducción a JUnit (3/3) ● Los conceptos básicos de JUnit son: ○ Test class ○ Test method ● Assert ○ Fixture method ○ Test suite ○ Test runner
  • 12. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Test Class Una Test Class es una clase java que contendrá un conjunto de Test Methods. Por ejemplo, para probar los métodos de una clase Calculadora creamos la clase CalculadoraTest. import org.junit.Test; public class CalculadoraTest { @Test public void testXXX() { ... } }
  • 13. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Test Methods (1/2) Los métodos de prueba deben indicarse con la anotación @Test. Tienen que ser públicos, sin parámetros y devolver void. import org.junit.Test; public class CalculadoraTest { @Test public void testSuma() { Calculadora calculadora = new CalculadoraImpl(); double res = calculadora.suma(1, 1); assertEquals(2, res, 0); } } JUnit crea una nueva instancia de la test class antes de invocar a cada @Test method.
  • 14. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Test Methods (2/2) Los métodos de test los creamos siguiendo el patrón AAA: 1. Arrange (Preparar) 2. Act (Actuar) 3. Assert (Afirmar) @Test public void testSuma() { // Arrange Calculadora calculadora = new CalculadoraImpl(); // Act double res = calculadora.suma(1, 1); // Assert assertEquals(2, res, 0); }
  • 15. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Condiciones de aceptación Assert Para realizar validaciones en nuestros métodos de prueba, utilizamos las condiciones de aceptación assertXXX(), que proporciona la clase Assert de JUnit. Ejemplos: assertEquals("message", A, B) Validar la igualdad de los objetos A y B, utiliza el método equals(). assertSame("message", A, B) Validar que A y B son el mismo objeto, utiliza el operador ==. assertTrue("message", A) Validar que la condición A es true. assertNotNull("message", A) Validar que el objeto A no es nulo.
  • 16. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Fixture Methods Las clases de tests tienen que programarse eficientemente y refactorizarse cuando sea necesario. JUnit nos proporciona anotaciones para definir métodos adicionales pre/post test. Mediante los que podemos inicializar o finalizar elementos comunes, evitar duplicidades, preparar datos, etc. public class CalculadoraTest { Calculadora calculadora; @BeforeClass @Before @Before public void inicializa() { calculadora = new CalculadoraImpl(); } @After @Test @AfterClass public void testSuma() { double res = calculadora.suma(1, 1); assertEquals(2, res, 0); } }
  • 17. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tests de Timeout Podemos realizar sencillos test de rendimiento verificando que un test no exceda un tiempo límite de ejecución. Para ello utilizamos el parámetro timeout. @Test(timeout=100) public void testProcessTimeout() { ... } El test fallará, si se demora más de 100 milisegundos.
  • 18. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tests de manejo de excepciones Si estamos probando un método que puede lanzar excepciones, nos es de interés poder verificar, que para las condiciones oportunas, nuestro código lanza la excepción esperada. Para ello utilizamos el parámetro expected. @Test(expected=IllegalArgumentExcepcion.class) public void testSumaGetIllegalArgumentException() { ... } El test fallará, si no se produce la excepción IllegalArgumentException.
  • 19. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Ignorar un Test JUnit proporciona una anotación para indicar que un determinado test no queremos que se ejecute. @Ignore(value="Mensaje") @Test public void testXXX() { ... } Evitar un test no es una buena práctica, pero si en alguna ocasión nos es necesario es mejor utilizar la anotación @Ignore a simplemente comentar código. Es importante indicar siempre una razon por la que ignoramos un test con el parámetro value.
  • 20. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tests Runners JUnit permite definir cómo se han de ejecutar nuestros tests, mediante el uso de diferentes Tests Runners. org.junit.runners.JUnit4 Runner por defecto. org.junit.runners.Parameterized Ejecuta múltiples veces cada test con diferentes parámetros. org.junit.runners.Suite Runner de los Test Suite org.springframework.test. Runner de Spring para que los tests context.junit4. puedan trabajar con el contenedor IoC. SpringJUnit4ClassRunner Utilizamos la anotación @RunWith @RunWith(value=Parameterized.class) public class CalculadoraImplParameterizedTest {
  • 21. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tests Parametrizados (1/2) Parameterized es un test runner que nos permite ejecutar un test múltiples veces con diferentes juegos de parámetros. @RunWith(value=Parameterized.class) public class CalculadoraImplParameterizedTest { private double esperado, num1, num2; @Parameters public static Collection<Integer[]> gestTestParameters(){ return Arrays.asList(new Integer[][] { {2, 1, 1}, {3, 2, 1}, {4, 3 ,1}, }); } public CalculadoraImplParameterizedTest(double esperado, double num1, double num2) { this.esperado = esperado; this.num1 = num1; this.num2 = num2; } @Test public void testSuma() { CalculadoraImpl calculadora = new CalculadoraImpl(); double calculado = calculadora.suma(num1, num2); assertEquals(esperado, calculado, 0); } }
  • 22. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tests Parametrizados (2/2)
  • 23. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 AssertThat y Hamcrest (1/2) La librería de matchers Hamcrest nos permite escribir validaciones de forma más clara y fácil. @Test public void testSumaHamcrest() { CalculadoraImpl calculadora = new CalculadoraImpl(); double calculado = calculadora.suma(num1, num2); assertThat(esperado, is(calculado)); } Además, con Hamcrest, los errores en los assert son más descriptivos.
  • 24. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 AssertThat y Hamcrest (2/2) Matches Hamcrest mas comunes: ● anything ● is ● allOf ● anyOf ● not ● instanceOf, isCompatibleType ● sameInstance ● notNullValue, nullValue ● hasProperty ● hasEntry, hasKey, hasValue ● hasItem, hasItems ● closeTo, greaterThan, lessThan ● containsString, endsWith, startWith ● ...
  • 25. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Buenas Prácticas ● Un test unitario debe probar exclusivamente el SUT. ● Un test unitario no puede modificar el estado del sistema. ● Un test unitario tiene que ser pequeño, debe probar una sola funcionalidad, para un único objeto cada vez. ● Los nombres de los métodos de test deben ser los más claros posibles. No importa que utilicemos nombres largos. ● Indicar un mensaje en todas las llamadas assert. ● Deja que los tests mejoren el código.
  • 26. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Tipos de validación ● Recapitulando, observamos que en nuestros tests unitarios realizamos diferentes tipos de comprobaciones: ○ Validación de estado assertEquals ( valorEsperado, valorCalculado ) ○ Validación excepciones @Test ( expected=IllegalArgumentException.class ) ○ Validación rendimiento @Test ( timeout=100 ) ○ Validación interacción Utilizaremos Dobles (Mocks, Stubs, etc)
  • 27. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Caso de ejemplo (1/5) ● Una Calculadora de Impuestos. public interface CalculadoraImpuestos { public double calculaImpuestoMatriculacion(double valorVehiculo, int cv); } public class CalculadoraImpuestosImpl implements CalculadoraImpuestos { public double calculaImpuestoMatriculacion(double valorVehiculo, int cv) { ... } }
  • 28. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Caso de ejemplo (2/5) ● Creamos la clase que contendrá las pruebas. import static org.junit.Assert.*; import org.junit.Test; public class CalculadoraImpuestosImplTest { @Test public void test() { fail("Not yet implemented"); } }
  • 29. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Caso de ejemplo (3/5) ● 1ª Regla de negocio: Vehículos con menos de 70CV impuesto 9% ● Primer test: @Test public void testUsoImpuestoEcologicoParaCvMenor70() { CalculadoraImpuestosImpl calculadora = new CalculadoraImpuestosImpl(); double valorVehiculo = 10000; int cv = 65; double impuestoEsperado = 900; double impuestoCalculado = calculadora.calculaImpuestoMatriculacion(valorVehiculo, cv); assertEquals("Impuesto para vehiculos de menos de 70 CV debería ser del 9%", impuestoEsperado, impuestoCalculado, 0); }
  • 30. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Caso de ejemplo (4/5) ● 2ª Regla de negocio: Un vehículo no puede tener 0CV ● Segundo test: @Test(expected=IllegalArgumentException.class) public void test0CvGetIllegalArgumentException() { CalculadoraImpuestosImpl calculadora = new CalculadoraImpuestosImpl(); calculadora.calculaImpuestoMatriculacion(100.0, 0); }
  • 31. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Caso de ejemplo (5/5) ● Podemos refactorizar la clase de test para evitar duplicidad de código. public class CalculadoraImpuestosImplTest { private CalculadoraImpuestosImpl calculadora; @Before public void inicializa() { calculadora = new CalculadoraImpuestosImpl(); } @After public void finaliza() { calculadora = null; } @Test public void testUsoImpuestoEcologicoParaCvMenor70() { double valorVehiculo = 10000; int cv = 65; double impuestoEsperado = 900; double impuestoCalculado = calculadora.calculaImpuestoMatriculacion(valorVehiculo, cv); assertEquals("Impuesto para vehiculos de menos de 70 CV debería ser del 9%" impuestoEsperado, , impuestoCalculado, 0); } @Test(expected=IllegalArgumentException.class) public void test0CvGetIllegalArgumentException() { calculadora.calculaImpuestoMatriculacion(100.0, 0); } }
  • 32. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Temas para otro día ... ● Dobles de Prueba (Mocks, Stubs) ● Tests de Integración con JUnit ● La extensión DBUnit ● TDD - Desarrollo Dirigido por Tests
  • 33. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Recursos ● JUnit Framework ● Hamcrest ● EasyMock ● Mockito
  • 34. Tests Unitarios con JUnit 4 Paulo Clavijo Esteban - Mayo 2012 Referencias Libros: ● JUnit In Action (2º Edition) - Manning. ● Java Power Tools - John Ferguson. ● Diseño Ágil Con TDD - Carlos Blé. Web: ● JUnit Documentacion ● The Hamcrest Tutorial
  • 35. Sobre el Autor: Paulo Clavijo Esteban Software Engineer en ISC clavijo_pau@ingenieriadesoftware.com Blog: www.lintips.com Email: paucls@gmail.com