No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

3D
21H
28M
28S
Curso B谩sico de Testing en Java

Curso B谩sico de Testing en Java

Ferran Maylinch Carrasco

Ferran Maylinch Carrasco

An谩lisis de los tests y mejoras

10/24
Recursos

Nuestros test siguen un mismo proceso:

  1. Se preparan los objetos que vamos a probar.
  2. Llamamos al m茅todo que estamos probando.
  3. Comprobamos los resultados.

Podemos reducir la cantidad de c贸digo moviendo las partes comunes de preparaci贸n a una funci贸n que se ejecute antes de cada prueba.
Con @Before le indicamos a JUnit la funci贸n que debe ejecutar antes de cada prueba.

Aportes 19

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Como apunte adicional, la anotaci贸n @BeforeClass se puede utilizar en m茅todos est谩ticos para ejecutar instrucciones al principio de todos los tests de esa clase. Esto puede usarse para operaciones costosas como conexiones a bases de datos que no quieras ejecutar antes de cada uno de los tests (que en una aplicaci贸n escalable pueden ser muchos).

Aporte: Las 3 A de los Test

    1. Arrange (Preparar)
    1. Act (Actuar)
    1. Assert (Afirmar)

Para los que utilizan Junit 5 ya no se utiliza @Before si no @BeforeEach

Los test normalmente se dividen en tres partes:
1掳 - Preparaci贸n del escenario (objetos que van a ser utilizados en el test).
2掳 - Llamada al m茅todo que se quiere probar.
3掳 - Comprobaci贸n de que el resultado es el esperado.

package com.platzi.javatests.payments;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import static com.platzi.javatests.payments.PaymentResponse.PaymentStatus.ERROR;
import static com.platzi.javatests.payments.PaymentResponse.PaymentStatus.OK;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class PaymentProcessorTest {

  @InjectMocks
  PaymentProcessor paymentProcessor;

  @Mock
  PaymentGateway paymentGateway;

  @Before
  public void setUp() {
    paymentProcessor = new PaymentProcessor(paymentGateway);
  }

  @Test
  public void makePayment_whenPaymentIsCorrect() {
    when(paymentGateway.requestPayment(any())).thenReturn(new PaymentResponse(OK));

    assertTrue(paymentProcessor.makePayment(1000));
  }

  @Test
  public void makePayment_whenPaymentIsWrong() {
    when(paymentGateway.requestPayment(any())).thenReturn(new PaymentResponse(ERROR));

    assertFalse(paymentProcessor.makePayment(1000));
  }
}

Las m茅todos test regularmente cuentan con tres secciones.

Preparaci贸n
Preparaci贸n de lo que se probara.
Llamada
Es la ejecuci贸n del m茅todo que se probara
Comprobaci贸n
Se eval煤a el resultado.

Si se realizaran pruebas sobre los mismo objetos se puede refactorizar dicho c贸digo y colocarlo en un m茅todo que se nombra **setup **por defecto, a este m茅todo se lo coloca el decorador @Before, este nos ayuda a indicarle a los test que este m茅todo se debe lanzar antes en cada m茅todo.

Mis apunts de las 煤ltimas 3 clases 馃槃

Estructura de los test
//Given
//When o SUT 鈥淪ystem Under Testing鈥
//Then = Validar los resultados.

Viene muy bien este curso!!! Hasta ahora lo mejorcito de Java que hay en Platzi

En JUnit 5 no encontr茅 un @Before pero s铆 un @BeforeClass que hace lo mismo (solo es el renaming me imagino).

Lo 煤nico es que tendremos que hacer de nuestros m茅todos unos est谩ticos.

private static PaymentGateway paymentGateway;
private static PaymentProcessor paymentProcessor; 

Con esto ya les debe funcionar 馃槂

Por fin un buen curso en Platzi!

@Before
public void method()
The Before annotation indicates that this method must be executed before each test in the class, so as to execute some preconditions necessary for the test.
@BeforeClass
public static void method()
The BeforeClass annotation indicates that the static method to which is attached must be executed once and before all tests in the class. That happens when the test methods share computationally expensive setup (e.g. connect to database).

Procesos de los tests:

  1. Preparar objetos
  2. Ejecutar m茅todos
  3. Comprobar resultados

Seria bueno que mencionaras en que casos se utilizaria el @Before o ante que se sobrepone鈥

Muchas gracias por destacar las partes de cada prueba instructor Ferran, no sab铆a que se organizaban de esa manera y ahora con la anotaci贸n @Before vamos a poder ordenar mejor aquellos elementos que se repiten entre pruebas.

Genial

Super 馃槂

隆El curso va muy bien!