Maison  >  Article  >  Java  >  @Mock vs @InjectMocks dans Mockito : quand utiliser lequel ?

@Mock vs @InjectMocks dans Mockito : quand utiliser lequel ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-24 06:49:16368parcourir

@Mock vs. @InjectMocks in Mockito: When to Use Which?

Quand utiliser @Mock vs @InjectMocks dans Mockito

Mockito est un framework populaire pour les moqueries et les tests unitaires en Java. Il fournit deux annotations pour se moquer : @Mock et @InjectMocks. Il est crucial de comprendre leurs distinctions pour utiliser efficacement les simulations dans vos tests.

@Mock

@Mock est utilisé pour générer un objet simulé. Lorsque vous annotez un champ avec @Mock, Mockito crée un objet de la classe spécifiée et l'enregistre comme fictif. Cette simulation adhérera au comportement de l'interface de la simulation, fournissant un substitut aux objets réels dans vos tests.

@InjectMocks

En revanche, @InjectMocks annote une instance d'un classe en cours de test. Mockito injecte des objets fictifs créés avec des annotations @Mock dans cette instance. Cette technique vous permet de tester le comportement de la classe testée tout en interagissant avec des dépendances fictives spécifiques.

Considérations d'utilisation

Pour utiliser @Mock et @InjectMocks, vous' Je devrai initialiser les simulations et les injecter. Dans JUnit 4, utilisez @RunWith(MockitoJUnitRunner.class) ou Mockito.initMocks(this). Pour JUnit 5, employez @ExtendWith(MockitoExtension.class).

Exemple

Considérez l'exemple suivant illustrant l'utilisation de @Mock et @InjectMocks :

// JUnit 4
@RunWith(MockitoJUnitRunner.class)
public class SomeManagerTest {

    @InjectMocks
    private SomeManager someManager;

    @Mock
    private SomeDependency someDependency; // injected into someManager
    
    // tests...
}

Dans cet exemple, someManager est injecté avec l'instance fictive someDependency. Les tests peuvent désormais affirmer comment someManager interagit avec cette simulation.

Conclusion

L'utilisation appropriée de @Mock et @InjectMocks est essentielle pour des tests unitaires efficaces basés sur Mockito. En comprenant clairement leurs rôles, vous pouvez garantir l'exactitude et la fiabilité de vos tests.

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