6 votes

@WebMvcTest, @DataJpaTest Je me demande s'il s'agit de "tests unitaires" ou de "tests d'intégration".

Je ne suis pas bon en anglais. Veuillez comprendre.

Je le savais. L'utilisation de @SpringBootTest() L'annotation pour charger l'ensemble du haricot a été clairement pensée comme une " Integration Test. "

Cependant, l'utilisation de @SpringBootTest(classes=mybean.class) a été considéré comme un "test unitaire" parce qu'il n'exécute qu'un certain (sélectionné) " Bean(Class) ", bien qu'il exécute un ressort.

Je pensais aussi que la façon d'utiliser @ContextConfiguration" était aussi " Unit Tests. " Parce que je pensais que seules certaines classes pouvaient être exécutées, telles que @ContextConfusion(classes=myBean.class) .

Mais c'était mon erreur. J'ai reçu une réponse au dernier StackOverflow.

@SpringBootTest vs @ContextConfiguration vs @Import dans le test unitaire de Spring Boot

Ma dernière question Est-ce que l'utilisation @ContextConfiguration peut être un "test unitaire". $$$réponse ---> Non, ce n'est pas possible, c'est un test d'intégration qui exécute une seule classe dans spring. Habituellement, nous n'exécutons pas une seule classe avec Spring Framework. Quel est l'avantage de l'exécuter à l'intérieur du conteneur Spring si vous voulez seulement tester le code d'une classe (une unité) ? Oui, dans certains cas, il peut s'agir de quelques classes, mais pas de dizaines ou de centaines. Si vous exécutez une classe avec Spring, alors, dans tous les cas, vous devrez simuler toutes ses dépendances, la même chose peut être faite avec mockito...

Alors je demande à nouveau.

Est " @WebMvcTest " aussi " Integration Tests " ? Je pensais que " @WebMvcTest " était le " Unit Test ." Cependant, d'après la dernière réponse, @WebMvcTest a aussi le printemps en marche. La logique de la dernière réponse est donc que " @WebMvcTest " est aussi " Integration Test mais je ne comprends toujours pas.

Je suis confus. Est-ce que je joue juste avec les mots ?

  1. Test unitaire vs test d'intégration...
  2. Est-ce que le @WebMvcTest également un " Integration Test " ?

9voto

Ken Chan Points 17718

Citation de Spring doc :

Véritable tests unitaires sont généralement extrêmement rapides, car il y a pas de infrastructure d'exécution à mettre en place. Mettre l'accent sur de véritables tests unitaires dans le cadre de votre méthodologie de développement peut stimuler votre productivité.

Spring est également une sorte d'infrastructure d'exécution. Les tests unitaires doivent donc s'exécuter sans nécessiter l'intervention d'autres frameworks, même Spring.


Ensuite, il y a tout le section pour parler des tests d'intégration en introduisant Spring TestContext Framework qu'il décrit comme :

Le Spring Framework fournit un support de premier ordre pour i tests dans le module spring-test. Le nom du fichier JAR actuel peut inclure la version de la version et peut aussi être dans la forme longue de org.springframework.test, en fonction de l'endroit où vous l'obtenez (cf. la section sur la gestion des dépendances pour une explication). Cette bibliothèque comprend le org.springframework.test qui contiennent classes pour tests d'intégration avec un conteneur Spring .

@ContextConfiguration provient de la Spring TestContext Framework tandis que Spring Boot s'appuie sur elle pour fournir @SpringBootTest y @WebMvcTest etc. Tous ces éléments sont donc destinés aux tests d'intégration.

Donc, pour résumer, si un test nécessite le démarrage de Spring pour être exécuté, comme par exemple @WebMvcTest il ne s'agit pas d'un test unitaire mais d'un test d'intégration.

3voto

Ortomala Lokni Points 5613

Tout d'abord, quelques définitions tirées du Site web sur les principes fondamentaux des tests de logiciels :

TESTS UNITAIRES est un niveau de test de logiciel où les unités/composants individuels d'un logiciel sont testés. L'objectif est de valider que chaque unité du logiciel fonctionne comme prévu.

TESTS D'INTÉGRATION est un niveau de test logiciel où les unités individuelles sont combinées et testées en tant que groupe. L'objectif de ce niveau de test est d'exposer les failles dans l'interaction entre les unités intégrées.

Pour répondre à votre question, les trois annotations @SpringBootTest , @ContextConfiguration et @WebMvcTest sont tous impliqués dans le chargement d'un sous-ensemble de composants de Spring. Ils sont en conséquence liés aux tests d'intégration.

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