Anotacion SpringBootTest
Es una atencion bastante a tener en cuenta cuando estamos haciendo testing. Es importante conocer como funciona. De esta forma, podremos hacer tests de forma efectiva y sin gastar memoria / tiempo.
Esta anotacion instancia el notes/ApplicationContext de Spring y todos los notes/Spring Beans relacionados a ello, incluyendo, los del dominio de la aplicacion (Controller, Service, Repository)
Es importante recordar que todos los beans son en realidad objetos, muchos de estos objetos seguramente no son cosas que vayamos a probar es por eso que hay que tener cuidado al realizar tests, de configurar adecuadamente (O de no usarla) en caso de encontrarnos haciendo Unit Test para hacer que estos sean mas rapidos.
Ademas, esto podria traer efectos secundarios al codigo, debido a la autoconfiguracion de Spring, al ejecutar esta anotacion por ejemplo, podria realizar todas las migraciones de la base de datos (Que hace la autoconfiguracion de spring por nosotros) en caso de encontrarnos usando una libreria como notes/Flyway. Otro efecto secundario podria ser la creacion y el borrado de las tablas dentro de una base de datos gracias a la autoconfiguracion de Spring Data JPA.
# Atributo webEnvironment
En este atributo podemos especificar si deseamos que el servidor embebido se inicialize. Tiene cuatro estados posibles definidos en un enum:
- mock. Que se inicialize un servidor embebido de mock
- random_port. Que se inicialize el servidor en un puerto al azar disponible
- defined_port. Que se inicialize el servidor en un puerto especifico
- none. Que no se inicialize nada, ni mock ni real.