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.
- Se inicia ejecutando los metodos anotados con @BeforeAll.
- Se procede a instanciar la clase que contiene los tests mediante su constructor.
- Se ejecutan los metodos anotados con @BeforeEach.
- Se ejcuta el test en si, anotado con @Test.
- Se ejecutan los metodos anotados con @BeforeEach.
- Volver al paso 2 en caso de contener mas tests. Si se termino, seguir al paso 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).
- Se crea la instancia de la clase que contiene los tests.
- Se ejecutan los metodos anotados con @BeforeAll.
- Se ejecutan los metodos anotados con @BeforeEach.
- Se ejecuta el test en si, anotado con @Test.
- Se ejecutan los metodos anotados con @AfterEach.
- Se vuelve al paso 2 hasta terminar los tests, en caso de haber terminado, seguir al paso 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: