En la prueba unitaria, ¿cuáles son las diferencias entre @Runwith(SpringRunner.class)
& @SpringBootTest
?
¿Me puede explicar los casos de uso de cada uno?
java
spring-boot
junit
spring-boot-test
zouari
fuente
fuente
Respuestas:
@RunWith (SpringRunner.class): necesita esta anotación para habilitar funciones de arranque de primavera como
@Autowire
,@MockBean
etc. durante las pruebas de junit@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
Aquí está el artículo con ejemplos claros en ambos escenarios Baeldung
fuente
Desde spring.io :
Entonces, si no necesita todo lo que Spring Boot carga para su prueba de integración, es posible que no necesite
@SpringBootTest
fuente
@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
Ver https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing
"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.
fuente