SpringRunner vs SpringBootTest

11

En la prueba unitaria, ¿cuáles son las diferencias entre @Runwith(SpringRunner.class)& @SpringBootTest?

¿Me puede explicar los casos de uso de cada uno?

zouari
fuente
1
¿Has leído alguna de las diversas documentaciones? ¿Qué es lo que aún no está claro?
jonrsharpe
La diferencia obvia es la prueba de primavera versus la prueba de arranque de primavera, pero es una pregunta muy amplia
usuario7294900
Entendería cuándo debería usar @SpringBootTest además de SpringRunner.
zouari

Respuestas:

10

@RunWith (SpringRunner.class): necesita esta anotación para habilitar funciones de arranque de primavera como @Autowire, @MockBeanetc. 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

Consorcio inactivo
fuente
1

Desde spring.io :

@RunWith(SpringRunner.class)le dice a JUnit que se ejecute usando el soporte de prueba de Spring. SpringRunneres el nuevo nombre para SpringJUnit4ClassRunner, es un poco más fácil a la vista.

@SpringBootTestdice "bootstrap con el soporte de Spring Boot" (por ejemplo, cargar application.propertiesy 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

Xavier FRANCOIS
fuente
0

@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.

Tore Gard en techpros no
fuente