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; }
En revanche, Mockito.mock() crée directement une simulation :
import org.mockito.Mockito; ... MyService myservice = Mockito.mock(MyService.class);
@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 :
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; }
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!