MOCKITO Argument Matchers so močna orodja, ki se uporabljajo pri testiranju enot za prožno določanje argumentov pri nastavitvi posmeha. Vendar imajo več omejitev:
1. Kontekst uporabe: Argument Matchers se lahko uporablja samo v okviru metod trganja ali preverjanja. Ni jih mogoče uporabiti pri klicanju metod na preskusnem objektu. Na primer, pri klicanju metode na resničnem predmetu ne morete uporabiti `anyString ()`; Namesto tega bi morali uporabiti betonsko vrednost [1] [5].
2. Doslednost med argumenti: Pri uporabi argumentalnega ujemanja za en argument morajo vsi drugi argumenti uporabljati tudi Matchers. V istem klicu metode ne morete mešati matchers s konkretnimi vrednostmi za različne argumente. To je pogost vir `invalidUseofMatchersException` [7] [8].
3. Omejitve posmehovanja: Mockito se ne more norčevati po določenih metodah, kot so `enako ()`, `hashcode ()` ali končne metode. Medtem ko se lahko argumentirani ujemalci uporabljajo z metodami, ki se lahko norčujejo, ne razširjajo sposobnosti za norčevanje s temi omejenimi metodami [3].
4. Vrste argumentov: Mockito ponuja različne vgrajene ujemanje argumentov (npr. `Anytint ()`, `anyString ()`, `iSnull ()`), vendar morate za argument izbrati pravilen tip. Na primer, uporaba "katerega koli ()" s primitivnim tipom morda ne bo delovala, kot je bilo pričakovano; Namesto tega uporabite bolj specifični ujemalec, kot je `anyboolean ()` za boolove parametre [7].
5. Ujemalci argumentov po meri: Medtem ko Mockito omogoča ustvarjanje matchers po meri po metodi `argThat ()`, je za izvajanje vmesnika `argumentMatcher` skrbno upoštevati, da se matcher obnaša, kot je bilo pričakovano v različnih scenarijih [2] [4].
6. Integracija z drugimi knjižnicami: Pri uporabi Mockito z drugimi knjižnicami, kot je Hamcrest, zagotovite, da se integracija pravilno ravna. Na primer, Sonarqube bi lahko označil nekatere uporabe `argthat ()` z kot napačnimi Hamcrest Matchers, tudi če so veljavne [4].
Če povzamemo, medtem ko so MOCKITO ARGENTION MATCERS vsestranski, je njihova uporaba omejena na posebne kontekste in zahteva doslednost med argumenti metode. Poleg tega ne premagajo temeljnih omejitev Mockito glede nekaterih metod ali razredov.
Navedbe:[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