[JAVA] Qu'est-ce que ArgumentMatcher?

Qu'est-ce que ArgumentMatcher?

Dans le test, les arguments passés au simulacre dans les paramètres d'opération de méthode et la vérification d'appel de méthode peuvent différer des arguments réellement passés de la classe cible du test à la méthode simulée. À ce stade, en utilisant ArgumentMatcher, le contenu de l'argument peut être vérifié en douceur.

--Valider uniquement le type passé --Omettre la vérification des arguments qui ont été vérifiés dans d'autres cas de test --Spécifier les conditions détaillées

Il existe des utilisations telles que.

Par exemple, si vous souhaitez valider uniquement le type passé, vous pouvez utiliser la méthode ArgumentMatchers.any. Il est également utilisé pour ignorer la validation d'arguments qui ont déjà été validés dans d'autres cas de test.

Mockito.doNothing().when(display).display(ArgumentMatchers.any());
Mockito.verify(display, Mockito.times(1)).display(ArgumentMatchers.any());

Certains types de base et types de collection ont des méthodes correspondantes à l'avance, mais vous pouvez également les créer lors de la vérification du type de votre propre classe.

Mockito.doNothing().when(display).display(ArgumentMatchers.anyString()); 
Mockito.verify(display, Mockito.times(1)).display(ArgumentMatchers.any(String.class));

Lorsque vous souhaitez spécifier des conditions détaillées

--Créez une classe d'implémentation pour l'interface ArgumentMatcher. À ce stade, la méthode matches est remplacée.

ArgumentMatcher<String> matcher = argument -> { 
  assertThat(argument.substring(1), is(msg));
  return true; 
};
Mockito.doNothing().when(display).display(Mockito.argThat(matcher)); 
Mockito.verify(display, Mockito.times(1)).display(Mockito.argThat(matcher));
 

Mise en garde

La formule lambda est utilisée dans la formule ci-dessus. L'expression lambda est une autre omission de la description par la classe anonyme.

Le remplacement de la méthode matches d'ArgumentMatcher est écrit à l'aide d'une classe anonyme comme suit.

ArgumentMatcher<String> matcher = new ArgumentMatcher(
  @Override 
  public boolean matches(Object argument) {
    assertThat(argument.substring(1), is(msg));
    return true;
  }
)

En utilisant l'équation lambda, vous pouvez:

--Omettre nouveau (car les expressions lambda créent toujours une instance) --Omit ArgumentMatcher (Ici, il est évident que vous voulez passer au matcher la classe d'implémentation d'ArgumentMatcher. Peut-être que la déclaration de type de variable fonctionne ici) -Omit @Override, matches (L'interface ArgumentMatcher n'a qu'une seule méthode. Les deux sont évidents car nous créons une classe d'implémentation pour cela.)

Pour la pratique, écrivons à nouveau la définition d'ArgumentMatcher.

ArgumentMatcher<String> matcher = argument -> {
  assertThat(argument.substring(1), is(msg));
  return true;
};

Bon travail.

Recommended Posts

Qu'est-ce que ArgumentMatcher?
Qu'est-ce que Cubby
Qu'est-ce qui est nul? ]
Qu'est-ce que 'java
Qu'est-ce que Keycloak
Qu'est-ce que maven?
Qu'est-ce que Jackson?
Qu'est-ce que soi
Qu'est-ce que Jenkins
Qu'est-ce que IM-Juggling?
Qu'est-ce que les paramètres
Qu'est-ce que SLF4J?
Qu'est-ce que la façade? ??
Qu'est-ce que Java <>?
Qu'est-ce que Gradle?
Qu'est-ce que POJO
Qu'est-ce que 'java
Qu'est-ce que centOS
Qu'est-ce que RubyGem?
Qu'est-ce que before_action?
Qu'est-ce que Docker
Qu'est-ce que Byte?
Qu'est-ce que Tomcat
Qu'est-ce que l'assemblage Maven?
Qu'est-ce que `docker-compose up`?
Qu'est-ce que vue cli
Qu'est-ce qu'une interface
Qu'est-ce que le moi de Ruby?
Qu'est-ce que l'attr_accessor de Ruby?
Qu'est-ce que l'encapsulation Java?
Qu'est-ce qu'une permission refusée?
Qu'est-ce que le contrôle d'instance?
Qu'est-ce qu'un initialiseur?
Qu'est-ce que Spring Tools 4
Qu'est-ce qu'un opérateur?
Qu'est-ce que l'orientation objet?
Qu'est-ce que le @VisibleForTesting de Guava?
Qu'est-ce qu'un modèle MVC?
Qu'est-ce qu'une annotation?
Qu'est-ce que la technologie Java?
Qu'est-ce que Java API-java
Qu'est-ce que @ (variable d'instance)?
Qu'est-ce que l'artefact de Gradle?
Qu'est-ce que l'audit JPA?
[Java] Qu'est-ce que flatMap?
Qu'est-ce qu'un servlet?
Qu'est-ce que le développement Web?
[Java] Qu'est-ce que ArrayList?
Qu'est-ce que l'orientation objet après tout?
Qu'est-ce que l'assertion Java? Résumé.
[Mémorandum] Qu'est-ce qu'une erreur?
Qu'est-ce qu'une classe wrapper?