SpringRunner vs SpringBootTest


11

Nel test unitario, quali sono le differenze tra @Runwith(SpringRunner.class)& @SpringBootTest?

Puoi spiegarmi i casi d'uso di ognuno?


1
Hai letto qualcuno dei vari documenti? Cosa è ancora poco chiaro?
jonrsharpe,

La differenza evidente è il test di primavera contro il test di avvio di primavera, ma è una domanda molto ampia
user7294900

Vorrei capire quando dovrei usare @SpringBootTest oltre a SpringRunner.
zouari,

Risposte:


10

@RunWith (SpringRunner.class): è necessaria questa annotazione per abilitare solo le funzionalità di avvio a molla come @Autowire, @MockBeanecc. Durante i test junit

viene utilizzato per fornire un ponte tra le funzionalità di test di Spring Boot e JUnit. Ogni volta che utilizziamo qualsiasi funzionalità di test di Spring Boot nei nostri test JUnit, questa annotazione sarà richiesta.

@SpringBootTest: questa annotazione viene utilizzata per caricare il contesto completo dell'applicazione per i test di integrazione end-to-end

L'annotazione @SpringBootTest può essere utilizzata quando è necessario avviare l'intero contenitore. L'annotazione funziona creando ApplicationContext che verrà utilizzato nei nostri test.

Ecco l'articolo con chiari esempi su entrambi gli scenari Baeldung


1

Da spring.io :

@RunWith(SpringRunner.class)dice a JUnit di funzionare usando il supporto per i test di Spring. SpringRunnerè il nuovo nome di SpringJUnit4ClassRunner, è solo un po 'più facile da vedere.

@SpringBootTeststa dicendo "bootstrap con il supporto di Spring Boot" (es. carica application.propertiese dammi tutta la bontà di Spring Boot)

Quindi, se non hai bisogno di tutto ciò che Spring Boot carica per il tuo test di integrazione, potresti non averne bisogno @SpringBootTest


0

@RunWith è una vecchia annotazione di JUnit 4 per utilizzare i test runner. Se stai usando JUnit 5 (Jupiter), dovresti usare @ExtendWith per usare le estensioni JUnit

Vedi https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing

"Se si utilizza JUnit 4, non dimenticare di aggiungere anche @RunWith (SpringRunner.class) al test, altrimenti le annotazioni verranno ignorate. Se si utilizza JUnit 5, non è necessario aggiungere l'equivalente @ExtendWith ( SpringExtension.class) come @SpringBootTest e le altre annotazioni @… Test sono già annotate con esso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.