Mockito Arguments Matchers est des outils puissants utilisés dans les tests unitaires pour spécifier de manière flexible les arguments lors de la configuration des simulations. Cependant, ils viennent avec plusieurs limitations:
1. Contexte d'utilisation: les matchs d'arguments ne peuvent être utilisés que dans le contexte des méthodes de tronçonneuse ou de vérification. Ils ne peuvent pas être utilisés lors de l'appel des méthodes sur l'objet testé. Par exemple, vous ne pouvez pas utiliser `anyString ()` lorsque vous appelez une méthode sur un objet réel; Au lieu de cela, vous devez utiliser une valeur en béton [1] [5].
2. Cohérence entre les arguments: lors de l'utilisation d'un match pour un argument pour un argument, tous les autres arguments doivent également utiliser des correspondances. Vous ne pouvez pas mélanger des correspondances avec des valeurs concrètes pour différents arguments dans le même appel de méthode. Il s'agit d'une source commune de la `invalidUseOfMatchersException» [7] [8].
3. Limitations de moquerie: Mockito ne peut pas se moquer de certaines méthodes comme `equals ()`, `hashcode () ', ou méthodes finales. Bien que les matchs d'arguments puissent être utilisés avec des méthodes qui peuvent être moquées, ils n'étendent pas la capacité de se moquer de ces méthodes restreintes [3].
4. Types d'arguments des arguments: Mockito fournit une variété de matchs d'arguments intégrés (par exemple, `anyinth ()`, `anyString () ',` isNull () `), mais vous devez choisir le bon type pour l'argument. Par exemple, l'utilisation de `any ()" avec un type primitif peut ne pas fonctionner comme prévu; Au lieu de cela, utilisez un correspondant plus spécifique comme `anyBoolean ()` pour les paramètres booléens [7].
5. Matchants d'arguments personnalisés: Bien que Mockito vous permette de créer des matchs personnalisés en utilisant la méthode `argthat ()`, la mise en œuvre de l'interface `ArgumentMatcher» nécessite une attention particulière pour garantir que le match se comporte comme prévu dans différents scénarios [2] [4].
6. Intégration avec d'autres bibliothèques: Lorsque vous utilisez Mockito avec d'autres bibliothèques comme Hamcrest, assurez-vous que l'intégration est correctement gérée. Par exemple, Sonarqube pourrait signaler certaines utilisations de `argthat () 'avec des matchs Hamcrest comme incorrects, même s'ils sont valides [4].
En résumé, bien que les matchs des arguments Mockito soient polyvalents, leur utilisation est limitée à des contextes spécifiques et nécessite une cohérence entre les arguments de la méthode. De plus, ils ne surmontent pas les limites fondamentales de Mockito concernant certaines méthodes ou classes.
Citations:[1] https://groups.google.com/g/mockito/c/ul9ymczqnky
[2] https://kenkousen.substack.com/p/tales-from-the-jar-side-a-mockito
[3] https://ioflood.com/blog/mockito/
[4] https://community.sonarsource.com/t/problem-with-java-rule-s6073-mockito-argument-matchers-in-ase-of-usage-mockitohamcrest-adapter/38429
[5] https://groups.google.com/g/mockito/c/zi6pcqudtco
[6] https://www.lambdatest.com/automation-tetsting-advisor/selenium/methods/org.mockito.argumentmatchers.isnull
[7] https://stackoverflow.com/questions/16458136/mockito-invalid-use-of-argument-matchers
[8] https://www.baeldung.com/mockito-argument-matchers