Contexte
Dans les tests de logiciels , la moquerie est une technique utilisée pour créer de faux objets qui simulent le comportement de dépendances réelles. Mockito est un framework de simulation populaire en Java qui offre plusieurs façons de se moquer d'objets. Ce guide compare les différentes approches et leur utilisation appropriée.
Mockito.mock() vs @Mock (Annotations Mockito)
Mockito.mock() et @Mock sont de la bibliothèque standard Mockito. Les deux créent des objets fictifs pour les classes ou les interfaces. @Mock fournit une solution pratique basée sur des annotations, tandis que Mockito.mock() est plus explicite. En termes de fonctionnalités, ils sont équivalents. Cependant, l'utilisation de @Mock est préférable car elle simplifie le code.
@MockBean (Spring Boot)
@MockBean est un wrapper fourni par la bibliothèque de tests Spring Boot. Il combine les capacités de simulation de Mockito avec la gestion des beans Spring. Contrairement à Mockito.mock() et @Mock, @MockBean crée des beans fictifs qui sont injectés dans Spring ApplicationContext. Il a deux caractéristiques clés :
Consignes d'utilisation
Quand utiliser Mockito simple : utilisez Mockito.mock() ou @Mock lors du test de composants sans en s'appuyant sur les dépendances de Spring Boot ou lorsque l'isolement du composant testé est crucial.
Quand utiliser @MockBean : utilisez @MockBean dans des tranches de test Web (par exemple, @WebMvcTest) ou d'autres scénarios de test nécessitant la modification du bean Spring Boot. définitions ou interagir avec des beans gérés par le conteneur.
Exemple avec @MockBean
Considérez un test Web Spring Boot où le FooController s'appuie sur le FooService. En utilisant @MockBean, nous pouvons remplacer le vrai bean FooService par un mock dans le contexte de test :
<code class="java">@WebMvcTest(FooController.class) public class FooControllerTest { @MockBean private FooService fooServiceMock; // ... // }</code>
Dans cet exemple, l'instance fooServiceMock sera injectée dans le FooController, nous permettant de nous moquer de son comportement et de son contrôle. comment il interagit avec le contrôleur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!