[JAVA] Méthodes statiques simulées dans Mockito 3.4

Aperçu

Prise en charge des méthodes statiques simulées à partir de la version 3.4 de Mockito. Cela élimine le besoin d'installer PowerMock si vous souhaitez simplement simuler des méthodes statiques.

environnement

En plus du pot ci-dessus, vous aurez besoin de nouveaux mockito-inline et byte-buddy-agent.

Vous pouvez les télécharger depuis Site officiel Mockito et Site officiel ByteBuddy, respectivement.

version
java 8
JUnit 5

Exemple de code

Classe à se moquer

Contient des méthodes statiques.

public class MockedClass {

    public static String methodA() {
        return "val1";
    }

    public static String methodB() {
        return "val2";
    }

    public static String methodC(String str) {
        return str;
    }
}

Classe d'essai

public class MockedClassTest {

    @Test
    public void test() throws Exception {

        //Valeur attendue
        String expected_methodA = "test";
        String expected_methodB = "val2";

        //Se moquer de la classe cible
        MockedStatic<MockedClass> mocked = Mockito.mockStatic(MockedClass.class);
        //Définir une valeur de retour et en faire un stub
        mocked.when(MockedClass::methodA).thenReturn(expected_methodA);
        //Quand pas stub
        mocked.when(MockedClass::methodB).thenCallRealMethod();

        //Courir
        String actual_methodA = MockedClass.methodA();
        String actual_methodB = MockedClass.methodB();

        //Vérifiez le résultat
        assertEquals(expected_methodA, actual_methodA);
        assertEquals(expected_methodB, actual_methodB);
    }
}

Pour se moquer de Mockito.mockStatic () ThenReturn () pour définir la valeur de retour Si vous voulez appeler la chose réelle sans définir la valeur de retour, thenCallRealMethod () Vous pouvez utiliser.

Comment spécifier une méthode statique

Dans l'exemple de code, il est spécifié par la référence de méthode comme «MockedClass :: methodA», mais la méthode de description lorsqu'il y a un argument est la suivante.

mocked.when(() -> { MockedClass.methodC(Mockito.anyString()); })
      .thenReturn("stub");

Vous pouvez spécifier any () de Mockito dans la liste d'arguments. Bien entendu, l'expression lambda est valide même en l'absence d'argument. {} Peut être omis selon la règle de description d'expression lambda.

mocked.when(() -> MockedClass.methodA())
      .thenReturn("stub");

Recommended Posts

Méthodes statiques simulées dans Mockito 3.4
Méthodes statiques simulées avec PowerMock
Changements dans Mockito 2
Org.mockito.exceptions.misusing.InvalidUseOfMatchersException dans Mockito
Vérifier le comportement statique et public dans les méthodes Java
Test simulé de Mockito
À propos des méthodes de validation dans JUnit
Maquette et stub dans RSpec
Méthodes d'assistance disponibles dans la devise
Tester les méthodes privées dans JUnit
Tester les méthodes privées dans JUnit
Désactiver l'initialiseur statique dans PowerMock
À propos des méthodes Java statiques et non statiques
Différences dans les méthodes de fractionnement de StringUtils
Méthodes fréquemment utilisées dans Active Record
Mock seulement quelques méthodes avec Spock
Méthodes Ruby souvent utilisées dans Rails