SpringRunner vs SpringBootTest


11

Dans le test unitaire, quelles sont les différences entre @Runwith(SpringRunner.class)& @SpringBootTest?

Pouvez-vous m'expliquer les cas d'utilisation de chacun?


1
Avez-vous lu l'une des diverses documentations? Qu'est-ce qui n'est toujours pas clair?
jonrsharpe

La différence évidente est le test Spring vs le test Spring Boot, mais c'est une question très large
user7294900

Je comprendrais quand devrais-je utiliser @SpringBootTest en plus de SpringRunner.
zouari

Réponses:


10

@RunWith (SpringRunner.class): Vous avez besoin de cette annotation pour simplement activer les fonctionnalités de démarrage de printemps comme @Autowire, @MockBeanetc. pendant les tests junit

est utilisé pour fournir un pont entre les fonctionnalités de test Spring Boot et JUnit. Chaque fois que nous utilisons des fonctionnalités de test Spring Boot dans nos tests JUnit, cette annotation sera requise.

@SpringBootTest: cette annotation est utilisée pour charger le contexte d'application complet pour les tests d'intégration de bout en bout

L'annotation @SpringBootTest peut être utilisée lorsque nous devons amorcer le conteneur entier. L'annotation fonctionne en créant le ApplicationContext qui sera utilisé dans nos tests.

Voici l'article avec des exemples clairs sur les deux scénarios Baeldung


1

De spring.io :

@RunWith(SpringRunner.class)indique à JUnit de s'exécuter en utilisant le support de test de Spring. SpringRunnerest le nouveau nom SpringJUnit4ClassRunner, c'est juste un peu plus agréable à l'oeil.

@SpringBootTestdit "bootstrap avec le support de Spring Boot" (par exemple, chargez application.properties-moi et donnez-moi toutes les qualités de Spring Boot)

Donc, si vous n'avez pas besoin de tout ce que Spring Boot charge pour votre test d'intégration, vous n'aurez peut-être pas besoin @SpringBootTest


0

@RunWith est une ancienne annotation de JUnit 4 pour utiliser des lanceurs de test. Si vous utilisez JUnit 5 (Jupiter), vous devez utiliser @ExtendWith pour utiliser les extensions JUnit

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

"Si vous utilisez JUnit 4, n'oubliez pas d'ajouter également @RunWith (SpringRunner.class) à votre test, sinon les annotations seront ignorées. Si vous utilisez JUnit 5, il n'est pas nécessaire d'ajouter l'équivalent @ExtendWith ( SpringExtension.class) en tant que @SpringBootTest et les autres annotations @… Test sont déjà annotées avec elle.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.