Matchers Match Argument Matchers sú výkonné nástroje používané pri testovaní jednotiek na flexibilne zadanie argumentov pri nastavovaní falošných. Prichádzajú však s niekoľkými obmedzeniami:
1. Kontext použitia: Matchers Argument sa dajú použiť iba v kontexte metód strhbovania alebo overovania. Nemožno ich použiť pri volaní metód na testovanom objekte. Napríklad pri volaní metódy na skutočný objekt nemôžete použiť „AnyString ()“; Namiesto toho by ste mali použiť konkrétnu hodnotu [1] [5].
2. Konzistentnosť naprieč argumentmi: Pri použití argumentu pre jeden argument musia všetky ostatné argumenty používať aj zápasníkov. V rovnakom volaní metódy nemôžete kombinovať zápasníkov s betónovými hodnotami pre rôzne argumenty. Toto je spoločný zdroj `invaliduseofmatcherSException` [7] [8].
3. Mocking Limits: Mockito sa nemôže zosmiešňovať určité metódy ako `equals ()`, `hashcode ()` alebo konečné metódy. Zatiaľ čo argumenty Matchers možno použiť s metódami, ktoré sa dajú zosmiešňovať, nerozširujú schopnosť zosmiešňovať tieto obmedzené metódy [3].
4. Typy argumentov Matcher: Mockito poskytuje rôzne vstavané argumenty (napr. „AnyInt ()`, `anyString ()`, `isNull ()`), ale musíte zvoliť správny typ pre argument. Napríklad použitie `akýmkoľvek ()` s primitívnym typom nemusí fungovať tak, ako sa očakávalo; Namiesto toho použite konkrétnejšieho matersra ako „Anyboolean ()` pre booleovské parametre [7].
5. Custom Argument Matchers: Aj keď vám Mockito umožňuje vytvárať vlastných zápasov pomocou metódy `argThat ()`, implementácia rozhrania „argumentMatcher` vyžaduje starostlivé zváženie, aby sa zabezpečilo, že materský pracovník sa správa, ako sa očakáva v rôznych scenároch [2] [4].
6. Integrácia s inými knižnicami: Pri používaní Mockito s inými knižnicami, ako je Hamcrest, sa uistite, že sa s integráciou správne zaobchádza. Napríklad Sonarqube by mohol označiť určité použitia `argthat ()` s hamcrestovými zápasníkmi ako nesprávne, aj keď sú platné [4].
V súhrne je, že zatiaľ čo materské argumenty Mockito sú všestranné, ich použitie je obmedzené na konkrétne kontexty a vyžaduje konzistentnosť v rámci argumentov metód. Okrem toho neprekonávajú základné obmedzenia Mockita týkajúce sa určitých metód alebo tried.
Citácie:[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.baelgn.com/Mockito-argument-matchers