En la prueba unitaria, ¿cuáles son las diferencias entre @Runwith(SpringRunner.class)
& @SpringBootTest
?
¿Me puede explicar los casos de uso de cada uno?
En la prueba unitaria, ¿cuáles son las diferencias entre @Runwith(SpringRunner.class)
& @SpringBootTest
?
¿Me puede explicar los casos de uso de cada uno?
Respuestas:
@RunWith (SpringRunner.class): necesita esta anotación para habilitar funciones de arranque de primavera como @Autowire
, @MockBean
etc. durante las pruebas de junit
se usa para proporcionar un puente entre las características de prueba de Spring Boot y JUnit. Siempre que usemos cualquier característica de prueba de Spring Boot en nuestras pruebas JUnit, se requerirá esta anotación.
@SpringBootTest: esta anotación se utiliza para cargar el contexto completo de la aplicación para las pruebas de integración de extremo a extremo
La anotación @SpringBootTest se puede usar cuando necesitamos arrancar todo el contenedor. La anotación funciona creando el ApplicationContext que se utilizará en nuestras pruebas.
Aquí está el artículo con ejemplos claros en ambos escenarios Baeldung
Desde spring.io :
@RunWith(SpringRunner.class)
le dice a JUnit que se ejecute usando el soporte de prueba de Spring.SpringRunner
es el nuevo nombre paraSpringJUnit4ClassRunner
, es un poco más fácil a la vista.
@SpringBootTest
dice "bootstrap con el soporte de Spring Boot" (por ejemplo, cargarapplication.properties
y darme toda la bondad de Spring Boot)
Entonces, si no necesita todo lo que Spring Boot carga para su prueba de integración, es posible que no necesite @SpringBootTest
@RunWith es una antigua anotación de JUnit 4 para usar corredores de prueba. Si está usando JUnit 5 (Júpiter), debe usar @ExtendWith para usar extensiones JUnit
"Si está usando JUnit 4, no olvide agregar también @RunWith (SpringRunner.class) a su prueba, de lo contrario las anotaciones serán ignoradas. Si está usando JUnit 5, no es necesario agregar el @ExtendWith equivalente ( SpringExtension.class) como @SpringBootTest y las otras @ ... Las anotaciones de prueba ya están anotadas con él.