🌱 Digital Garden

Search

Search IconIcon to open search

Last updated Jul 20, 2023 Edit Source

Quizas ver primero:


# Ciclo de vida de un Test en Java usando JUnit 5

Ahora que ya sabemos como realizar tests importando el JUnit Framework y sabemos usar assertions para obtener un resultado, veamos el ciclo de vida de los Test y las anotaciones que tenemos para cambiarlo.

Primero, debemos entender que este proceso se realiza cuando la anotacion @TestInstance esta por defecto, su valor por defecto es @TestInstance(TestInstance.Lifecycle.PER_METHOD) y como su nombre indica, crea una instancia de la clase que contieen los Tests por cada Test que se va a realizar.

  1. Se inicia ejecutando los metodos anotados con @BeforeAll.
  2. Se procede a instanciar la clase que contiene los tests mediante su constructor.
  3. Se ejecutan los metodos anotados con @BeforeEach.
  4. Se ejcuta el test en si, anotado con @Test.
  5. Se ejecutan los metodos anotados con @BeforeEach.
  6. Volver al paso 2 en caso de contener mas tests. Si se termino, seguir al paso 7.
  7. Se finaliza ejecutando los metodos anotados con @AfterAll.

Sin embargo, la anotacion @TestInstance tambien tiene otros modos, en caso de necesitarlo, podemos utilizar una unica instancia de la clase que contiene los Tests para toda nuestra ejecucion, lo declaramos usando @TestInstance(TestInstance.Lifecycle.PER_CLASS).

  1. Se crea la instancia de la clase que contiene los tests.
  2. Se ejecutan los metodos anotados con @BeforeAll.
  3. Se ejecutan los metodos anotados con @BeforeEach.
  4. Se ejecuta el test en si, anotado con @Test.
  5. Se ejecutan los metodos anotados con @AfterEach.
  6. Se vuelve al paso 2 hasta terminar los tests, en caso de haber terminado, seguir al paso 7.
  7. Se ejecutan los metodos anotados con @AfterAll.

Los metodos @BeforeAll y @AfterAll pueden ser utiles para abrir recursos de datos como archivos, bases de datos, sockets o otros y posteriormente cerrarlos.

@BeforeEach y @AfterEach nos permiten separar la instanciacion de clases antes de cada @Test y dejar las assertions unicamente dentro de ellos. Hacer esto es buena practica.


Siguiente: