[JAVA] Was ist ArgumentMatcher?

Was ist ArgumentMatcher?

Im Test können sich die in den Einstellungen für die Methodenoperation und die Überprüfung des Methodenaufrufs an den Mock übergebenen Argumente von den Argumenten unterscheiden, die tatsächlich von der Testzielklasse an die Mock-Methode übergeben wurden. Zu diesem Zeitpunkt kann mithilfe von ArgumentMatcher der Inhalt des Arguments sanft überprüft werden.

Es gibt Verwendungen wie.

Wenn Sie beispielsweise nur den übergebenen Typ überprüfen möchten, können Sie die Methode ArgumentMatchers.any verwenden. Es wird auch verwendet, um die Validierung von Argumenten zu überspringen, die bereits in anderen Testfällen validiert wurden.

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

Einige der Basistypen und Auflistungstypen verfügen im Voraus über entsprechende Methoden. Sie können sie jedoch auch erstellen, wenn Sie den Typ Ihrer eigenen Klasse überprüfen.

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

Wenn Sie detaillierte Bedingungen angeben möchten

--Erstellen Sie eine Implementierungsklasse für die ArgumentMatcher-Schnittstelle. Zu diesem Zeitpunkt wird die Übereinstimmungsmethode überschrieben.

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));
 

Hinweis

Die Lambda-Formel wird in der obigen Formel verwendet. Der Lambda-Ausdruck ist eine weitere Auslassung der Beschreibung durch die anonyme Klasse.

Die Überschreibung der Übereinstimmungsmethode von ArgumentMatcher wird unter Verwendung einer anonymen Klasse wie folgt geschrieben.

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

Mit der Lambda-Gleichung können Sie:

Zum Üben schreiben wir noch einmal die Definition von ArgumentMatcher.

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

Gut gemacht.

Recommended Posts

Was ist ArgumentMatcher?
Was ist Cubby?
Was ist null? ]]
Was ist java
Was ist Schlüsselumhang?
Was ist Maven?
Was ist Jackson?
Was ist Selbst
Was ist Jenkins?
Was ist IM-Jonglieren?
Was ist params
Was ist SLF4J?
Was ist Fassade? ??
Was ist Java <>?
Was ist Gradle?
Was ist POJO?
Was ist java
Was ist centOS?
Was ist RubyGem?
Was ist before_action?
Was ist Docker?
Was ist Byte?
Was ist Tomcat?
Was ist Maven Assembly?
Was ist Docker-Compose?
Was ist vue cli
Was ist eine Schnittstelle?
Was ist Rubys Selbst?
Was ist Rubys attr_accessor?
Was ist Java-Kapselung?
Was ist die Erlaubnis verweigert?
Was ist Instanzsteuerung?
Was ist ein Initialisierer?
Was ist Spring Tools 4?
Was ist ein Operator?
Was ist Objektorientierung?
Was ist Guavas @VisibleForTesting?
Was ist ein MVC-Modell?
Was ist eine Anmerkung?
Was ist Java-Technologie?
Was ist Java API-Java?
Was ist @ (Instanzvariable)?
Was ist Gradles Artefakt?
Was ist JPA-Prüfung?
[Java] Was ist flatMap?
Was ist ein Servlet?
Was ist Webentwicklung?
[Java] Was ist ArrayList?
Was ist eigentlich objektorientiert?
Was ist Java Assertion? Zusammenfassung.
[Memorandum] Was ist ein Fehler?
Was ist eine Wrapper-Klasse?