65 votes

Quand utiliser @RunWith et quand @ExtendWith ?

Mon équipe et moi avons travaillé sur un ensemble de microservices en utilisant Spring boot. Depuis que les services sont passés par des mises à jour de JUnit et Spring Boot (nous utilisons maintenant Spring Boot 2 et JUnit 5), différents JUnit implémentés par différents développeurs, utilisent maintenant différents patterns avec :

  • @ExtendWith
  • @RunWith

Aujourd'hui, quelle est la différence entre les deux et en avons-nous vraiment besoin pour nos tests unitaires ou sont-ils intégrés dans une nouvelle annotation de Spring Boot ?

93voto

TinyOS Points 1081

Si vous utilisez la version < 5 de Junit, vous devez utiliser @RunWith(SpringRunner.class) o @RunWith(MockitoJUnitRunner.class) etc.

Si vous utilisez la version = 5 de Junit, vous devez utiliser @ExtendWith(SpringExtension.class) o @ExtendWith(MockitoExtension.class) etc.

  1. SpringRunner
  2. MockitoJUnitRunner
  3. SpringExtension
  4. MockitoExtension

32voto

AR1 Points 1226

La réponse se trouve dans le la documentation :

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

.

10voto

Mureinik Points 61228

@RunWith est une ancienne annotation de JUnit 4 qui permet d'utiliser les gestionnaires de tests. Si vous utilisez JUnit 5 (Jupiter), vous devez utiliser @ExtendWith pour utiliser les extensions de JUnit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X