Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Wat zijn de beperkingen van het gebruik van Mockito -argument matchers


Wat zijn de beperkingen van het gebruik van Mockito -argument matchers


Mockito -argument matchers zijn krachtige tools die worden gebruikt bij het testen van eenheid om argumenten flexibel op te geven bij het instellen van mocks. Ze komen echter met verschillende beperkingen:

1. Gebruikscontext: argument matchers kunnen alleen worden gebruikt in de context van stomp- of verifiërende methoden. Ze kunnen niet worden gebruikt bij het oproepen van methoden op het te testen object. U kunt bijvoorbeeld geen `anystring ()` gebruiken bij het oproepen van een methode op een echt object; In plaats daarvan moet u een concrete waarde gebruiken [1] [5].

2. Consistentie tussen argumenten: bij het gebruik van een argument matcher voor één argument, moeten alle andere argumenten ook matchers gebruiken. U kunt geen matchers mixen met concrete waarden voor verschillende argumenten in dezelfde methodeaanroep. Dit is een veel voorkomende bron van de `invaliduseofmathersexception` [7] [8].

3. MOCKING BEPERKINGEN: Mockito kan bepaalde methoden niet bespotten, zoals `equals ()`, `hashcode ()` of definitieve methoden. Hoewel argumentmatchers kunnen worden gebruikt met methoden die kunnen worden bespot, breiden ze niet de mogelijkheid uit om deze beperkte methoden te bespotten [3].

4. Argument Matcher-typen: Mockito biedt een verscheidenheid aan ingebouwde argument matchers (bijv. `Anyint ()`, `AnyString ()`, `isnull ()`), maar u moet het juiste type kiezen voor het argument. Het gebruik van `any ()` met een primitief type werkt bijvoorbeeld niet zoals verwacht; Gebruik in plaats daarvan een meer specifieke matcher zoals `AnyBoolean ()` voor Booleaanse parameters [7].

5. Aangepaste argument matchers: terwijl Mockito u in staat stelt om aangepaste matchers te maken met behulp van de methode `arghat ()`, vereist het implementeren van de `argumentmater' -interface zorgvuldige overweging om ervoor te zorgen dat de matcher zich gedraagt ​​zoals verwacht in verschillende scenario's [2] [4].

6. Integratie met andere bibliotheken: bij het gebruik van Mockito met andere bibliotheken zoals Hamcrest, zorg er dan voor dat de integratie correct wordt afgehandeld. Sonarquis kan bijvoorbeeld bepaalde toepassingen van `arghat ()` met hamcrest matchers als onjuist markeren, zelfs als ze geldig zijn [4].

Samenvattend, hoewel Mockito -argumentatiematchers veelzijdig zijn, is hun gebruik beperkt tot specifieke contexten en vereist consistentie tussen methode argumenten. Bovendien overwinnen ze de fundamentele beperkingen van Mockito niet met betrekking tot bepaalde methoden of klassen.

Citaten:
[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-case-of-usage-mockitohamcrest-adapter/38429
[5] https://groups.google.com/g/mockito/c/zi6pcqudtco
[6] https://www.lambdatest.com/automation-testing-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