Dans le test unitaire, quelles sont les différences entre @Runwith(SpringRunner.class)
& @SpringBootTest
?
Pouvez-vous m'expliquer les cas d'utilisation de chacun?
Dans le test unitaire, quelles sont les différences entre @Runwith(SpringRunner.class)
& @SpringBootTest
?
Pouvez-vous m'expliquer les cas d'utilisation de chacun?
Réponses:
@RunWith (SpringRunner.class): Vous avez besoin de cette annotation pour simplement activer les fonctionnalités de démarrage de printemps comme
@Autowire
,@MockBean
etc. pendant les tests junit@SpringBootTest: cette annotation est utilisée pour charger le contexte d'application complet pour les tests d'intégration de bout en bout
Voici l'article avec des exemples clairs sur les deux scénarios Baeldung
la source
De spring.io :
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
la source
@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.
la source