Cours et méthodes finales simulées avec Mockito

1. Vue d'ensemble

Dans ce court article, nous allons nous concentrer sur la façon de simuler les classes et les méthodes finales - en utilisant Mockito.

Comme pour d'autres articles axés sur le framework Mockito (comme Mockito Verify, Mockito When / Then et Mockito's Mock Methods), nous utiliserons la classe MyList ci-dessous en tant que collaborateur dans les cas de test.

Nous ajouterons une nouvelle méthode pour ce tutoriel:

public class MyList extends AbstractList { final public int finalMethod() { return 0; } }

Et nous allons également l'étendre avec une sous-classe finale :

public final class FinalList extends MyList { @Override public int size() { return 1; } } 

2. Configurer Mockito pour les méthodes et classes finales

Avant que Mockito puisse être utilisé pour se moquer des classes et des méthodes finales, il doit être configuré.

Nous devons ajouter un fichier texte au répertoire src / test / resources / mockito-extensions du projet nommé org.mockito.plugins.MockMaker et ajouter une seule ligne de texte:

mock-maker-inline 

Mockito vérifie le répertoire d' extensions pour les fichiers de configuration lorsqu'il est chargé. Ce fichier permet de se moquer des méthodes et des classes finales.

3. Simulez une méthode finale

Une fois Mockito correctement configuré, une dernière méthode peut être moquée comme une autre :

@Test public void whenMockFinalMethodMockWorks() { MyList myList = new MyList(); MyList mock = mock(MyList.class); when(mock.finalMethod()).thenReturn(1); assertNotEquals(mock.finalMethod(), myList.finalMethod()); } 

En créant une instance concrète et une instance fictive de MyList , nous pouvons comparer les valeurs renvoyées par les deux versions de finalMethod () et vérifier que la maquette est appelée.

4. Simulez une classe finale

Se moquer d'une classe finale est aussi simple que de se moquer de n'importe quelle autre classe:

@Test public void whenMockFinalClassMockWorks() { FinalList finalList = new FinalList(); FinalList mock = mock(FinalList.class); when(mock.size()).thenReturn(2); assertNotEquals(mock.size(), finalList.size()); } 

Semblable au test ci-dessus, nous créons une instance concrète et une instance fictive de notre classe finale, simulons une méthode et vérifions que l'instance simulée se comporte différemment.

5. Conclusion

Dans ce tutoriel rapide, nous avons expliqué comment simuler des classes et des méthodes finales avec Mockito en utilisant une extension Mockito.

Les exemples complets, comme toujours, peuvent être trouvés sur GitHub.