Maison  >  Article  >  Java  >  Quand dois-je utiliser @Mock, @MockBean ou Mockito.mock() pour me moquer en Java ?

Quand dois-je utiliser @Mock, @MockBean ou Mockito.mock() pour me moquer en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 05:03:02624parcourir

When Should I Use @Mock, @MockBean, or Mockito.mock() for Mocking in Java?

Comprendre les différences entre @Mock, @MockBean et Mockito.mock()

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 :

  • Si un bean du même type existe dans le contexte, il est remplacé par le mock.
  • Si aucun bean du même type n'existe, le le bean fictif est ajouté au contexte.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn