Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Aké sú obmedzenia používania argumentov Mockito


Aké sú obmedzenia používania argumentov Mockito


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