Maison > Java > javaDidacticiel > le corps du texte

Quelle approche moqueuse vous convient le mieux : @Mock, @MockBean ou Mockito.mock() ?

Susan Sarandon
Libérer: 2024-10-26 06:52:30
original
570 Les gens l'ont consulté

 Which Mocking Approach is Right for You: @Mock, @MockBean, or Mockito.mock()?

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

Les tests unitaires impliquent souvent des dépendances moqueuses, mais il existe différentes approches pour le faire en Java. Pour différencier ces options, explorons les objectifs et fonctionnalités distincts de @Mock, @MockBean et Mockito.mock().

@Mock et Mockito.mock()

@Mock et Mockito.mock() proviennent de la bibliothèque Mockito, qui fournit une syntaxe basée sur des annotations et un appel de méthode direct pour créer des simulations.

L'utilisation de @Mock avec l'annotation @RunWith active Mockito. annotations lors de l’exécution des tests. Cette annotation marque la variable à laquelle elle est attachée comme une simulation Mockito.

import org.mockito.Mock;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
    @Mock
    private MyService myservice;
}
Copier après la connexion

En revanche, Mockito.mock() crée directement une simulation :

import org.mockito.Mockito;
...
MyService myservice = Mockito.mock(MyService.class);
Copier après la connexion

@MockBean from Spring Boot

@MockBean, quant à lui, est fourni par la bibliothèque de test Spring Boot, spécifiquement sous la classe org.springframework.boot.test.mock.mockito.MockBean. Cette annotation est spécialement conçue pour être utilisée avec les contextes Spring Boot.

@MockBean permet d'ajouter des beans simulés à un Spring ApplicationContext, en remplaçant ou en ajoutant efficacement des simulacres à la place des instances de bean réelles.

Choisir la bonne option : Mockito classique vs @MockBean

Quand utiliser quelle approche dépend du scénario de test et de la manière dont les dépendances sont gérées :

  • Classique Mockito : Idéal pour les tests unitaires où vous ne comptez pas sur le conteneur Spring Boot et souhaitez isoler le composant testé. Cette approche est très efficace et favorise l'isolement.
  • @MockBean : préféré pour les tests nécessitant une interaction avec le conteneur Spring Boot, en particulier lors de la simulation de beans gérés par le conteneur.

Utilisation typique de @MockBean avec Spring WebMVC

Par exemple, dans un scénario de test Web annoté avec @WebMvcTest, @MockBean est couramment utilisé pour simuler les beans utilisés par le contrôleur testé :

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
...
@WebMvcTest(FooController.class)
public class FooControllerTest {
    @Autowired
    private MockMvc mvc;

    @MockBean
    private FooService fooServiceMock;
}
Copier après la connexion

En comprenant ces différences et en choisissant l'approche appropriée en fonction de vos besoins en matière de tests, vous pouvez gérer efficacement les dépendances et garantir des tests efficaces et précis en Java avec Mockito et Spring Boot.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!