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?

zouari
la source
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

Dead Pool
la source
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

Xavier FRANCOIS
la source
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.

Tore Gard chez techpros no
la source