SlideShare a Scribd company logo
1 of 35
Download to read offline
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

More Related Content

What's hot

Performance Testing With Jmeter
Performance Testing With JmeterPerformance Testing With Jmeter
Performance Testing With JmeterAdam Goucher
 
Chapter 6 - Test Tools and Automation
Chapter 6 - Test Tools and AutomationChapter 6 - Test Tools and Automation
Chapter 6 - Test Tools and AutomationNeeraj Kumar Singh
 
Introduction to Test Automation
Introduction to Test AutomationIntroduction to Test Automation
Introduction to Test AutomationPekka Klärck
 
Chapter 4 - Quality Characteristics for Technical Testing
Chapter 4 - Quality Characteristics for Technical TestingChapter 4 - Quality Characteristics for Technical Testing
Chapter 4 - Quality Characteristics for Technical TestingNeeraj Kumar Singh
 
Automation testing & Unit testing
Automation testing & Unit testingAutomation testing & Unit testing
Automation testing & Unit testingKapil Rajpurohit
 
ISTQB / ISEB Foundation Exam Practice - 5
ISTQB / ISEB Foundation Exam Practice - 5ISTQB / ISEB Foundation Exam Practice - 5
ISTQB / ISEB Foundation Exam Practice - 5Yogindernath Gupta
 
Chapter 2 - White Box Test Techniques
Chapter 2 - White Box Test TechniquesChapter 2 - White Box Test Techniques
Chapter 2 - White Box Test TechniquesNeeraj Kumar Singh
 
Test Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.comTest Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.comIdexcel Technologies
 
Chapter 7 - People Skills and Team Composition
Chapter 7 - People Skills and Team CompositionChapter 7 - People Skills and Team Composition
Chapter 7 - People Skills and Team CompositionNeeraj Kumar Singh
 
Test Strategy and Planning
Test Strategy and PlanningTest Strategy and Planning
Test Strategy and PlanningSachin-QA
 
The Value-Adding Tester
The Value-Adding TesterThe Value-Adding Tester
The Value-Adding TesterJohan Hoberg
 
Chapter 3 - The Generic Test Automation Architecture
Chapter 3 - The Generic Test Automation Architecture Chapter 3 - The Generic Test Automation Architecture
Chapter 3 - The Generic Test Automation Architecture Neeraj Kumar Singh
 

What's hot (20)

ISTQB Test Process
ISTQB Test ProcessISTQB Test Process
ISTQB Test Process
 
Performance Testing With Jmeter
Performance Testing With JmeterPerformance Testing With Jmeter
Performance Testing With Jmeter
 
Chapter 1 - Testing Process
Chapter 1 - Testing ProcessChapter 1 - Testing Process
Chapter 1 - Testing Process
 
Chapter 6 - Test Tools and Automation
Chapter 6 - Test Tools and AutomationChapter 6 - Test Tools and Automation
Chapter 6 - Test Tools and Automation
 
Introduction to Test Automation
Introduction to Test AutomationIntroduction to Test Automation
Introduction to Test Automation
 
Chapter 3 - Reviews
Chapter 3 - ReviewsChapter 3 - Reviews
Chapter 3 - Reviews
 
Chapter 4 - Quality Characteristics for Technical Testing
Chapter 4 - Quality Characteristics for Technical TestingChapter 4 - Quality Characteristics for Technical Testing
Chapter 4 - Quality Characteristics for Technical Testing
 
Automation testing & Unit testing
Automation testing & Unit testingAutomation testing & Unit testing
Automation testing & Unit testing
 
Chapter 3 - Static Testing
Chapter 3 - Static TestingChapter 3 - Static Testing
Chapter 3 - Static Testing
 
ISTQB / ISEB Foundation Exam Practice - 5
ISTQB / ISEB Foundation Exam Practice - 5ISTQB / ISEB Foundation Exam Practice - 5
ISTQB / ISEB Foundation Exam Practice - 5
 
Chapter 2 - White Box Test Techniques
Chapter 2 - White Box Test TechniquesChapter 2 - White Box Test Techniques
Chapter 2 - White Box Test Techniques
 
Test Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.comTest Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.com
 
Effective Software Test Case Design Approach
Effective Software Test Case Design ApproachEffective Software Test Case Design Approach
Effective Software Test Case Design Approach
 
Java Unit Testing
Java Unit TestingJava Unit Testing
Java Unit Testing
 
Istqb chapter 5
Istqb chapter 5Istqb chapter 5
Istqb chapter 5
 
Chapter 7 - People Skills and Team Composition
Chapter 7 - People Skills and Team CompositionChapter 7 - People Skills and Team Composition
Chapter 7 - People Skills and Team Composition
 
Test Strategy and Planning
Test Strategy and PlanningTest Strategy and Planning
Test Strategy and Planning
 
The Value-Adding Tester
The Value-Adding TesterThe Value-Adding Tester
The Value-Adding Tester
 
TestNG with selenium
TestNG with seleniumTestNG with selenium
TestNG with selenium
 
Chapter 3 - The Generic Test Automation Architecture
Chapter 3 - The Generic Test Automation Architecture Chapter 3 - The Generic Test Automation Architecture
Chapter 3 - The Generic Test Automation Architecture
 

Viewers also liked

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..... ..
 

Viewers also liked (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 to JUnit Tests Guía

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
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmockkaolong
 
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
 

Similar to JUnit Tests Guía (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
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmock
 
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
 

More from 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
 

More from 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
 

Recently uploaded

Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 

Recently uploaded (20)

Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 

JUnit Tests Guía

  • 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