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
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
De spring.io :
@RunWith(SpringRunner.class)
indique à JUnit de s'exécuter en utilisant le support de test de Spring.SpringRunner
est le nouveau nomSpringJUnit4ClassRunner
, c'est juste un peu plus agréable à l'oeil.
@SpringBootTest
dit "bootstrap avec le support de Spring Boot" (par exemple, chargezapplication.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
@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
"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.