[JAVA] J'ai une exception InvalidUseOfMatchersException lors de l'utilisation de l'un dans le simulateur de JUnit

introduction

J'ai eu une InvalidUseOfMatchersException lors de l'utilisation de Matchers any () avec Mockito dans JUnit. Je vais résumer la solution.

Symptômes

J'ai écrit un code de test comme celui-ci.

@Test
public void testDoSomething() {
    Hoge hoge = mock(Hoge.class)
    when(hoge.doSomething(any(), "bar")).thenReturn(true);
}

Puisque le premier argument de hoge.doSomething () était une classe définie par nous-mêmes, nous mettons ʻorg.mockito.Matchers.any () `. Le deuxième argument est un type String, qui contient une chaîne de caractères spécifique.

Lorsque j'ai exécuté le test dans cet état, j'ai obtenu l'exception suivante.

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
5 matchers expected, 3 recorded:
-> at hogehoge
-> at hogehoge
-> at hogehoge

This exception may occur if matchers are combined with raw values:
    //incorrect:
    someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
    //correct:
    someMethod(anyObject(), eq("String by matcher"));

For more info see javadoc for Matchers class.

une analyse

When using matchers, all arguments have to be provided by matchers.

Autant que j'ai lu ce message d'erreur, il semble que tous les arguments doivent être au format matchers. Pour les arguments de type String, il semble bon d'utiliser ʻeq () `.

Solution

when(hoge.doSomething(any(), "bar")).thenReturn(true);

J'ai changé le code ci-dessus pour le suivant et l'exception ne se produit plus.

when(hoge.doSomething(any(), eq("bar"))).thenReturn(true);

à la fin

J'ai été sauvé par le message d'erreur poli qui détaillait la solution. Les matchers sont bons.

Recommended Posts

J'ai une exception InvalidUseOfMatchersException lors de l'utilisation de l'un dans le simulateur de JUnit
Quand je bcrypt avec node + docker, j'ai une erreur
J'ai eu une erreur lors de l'utilisation de nextInt, nextLine et substring.
Lorsque j'ai exécuté un pot créé à l'aide de WildFly Swarm, j'ai obtenu une InvocationTargetException.
Tester le code à l'aide d'une maquette avec JUnit (centre EasyMock)
Précautions lors de l'utilisation de Mockito.anyString comme argument lors de Mocking avec Mockito
J'ai essayé d'utiliser JOOQ avec Gradle
Quand j'ai essayé de créer un environnement pour PHP7.4 + Apache + MySQL avec Docker, je suis resté bloqué [Windows & Mac]
Lors de l'enregistrement d'un nouvel utilisateur, j'ai eu une erreur appelée ActiveRecord :: NotNullViolation et comment y faire face.
J'ai essayé d'utiliser Scalar DL avec Docker
J'ai créé un serveur écologique avec scala
J'ai essayé d'utiliser OnlineConverter avec SpringBoot + JODConverter
J'ai essayé d'utiliser OpenCV avec Java + Tomcat
Utilisation du type caché lors du PUT avec Thymeleaf
Après avoir renouvelé le certificat avec CircleCI × fastlane, j'obtiens un état de sortie: erreur 65.