Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Care sunt limitările utilizării matchers -ului argumentului Mockito


Care sunt limitările utilizării matchers -ului argumentului Mockito


Matcher -urile argumentelor Mockito sunt instrumente puternice utilizate în testarea unităților pentru a specifica flexibil argumentele atunci când configurați machete. Cu toate acestea, vin cu mai multe limitări:

1. Contextul de utilizare: potrivirile de argumente pot fi utilizate numai în contextul metodelor de chemare sau verificare. Acestea nu pot fi utilizate atunci când apelați metode pe obiectul testat. De exemplu, nu puteți utiliza `thistring ()` atunci când apelați o metodă pe un obiect real; În schimb, ar trebui să utilizați o valoare concretă [1] [5].

2. Coerență în argumente: Când utilizați un potrivitor de argument pentru un argument, toate celelalte argumente trebuie să utilizeze și potriviri. Nu puteți amesteca potriviri cu valori concrete pentru argumente diferite din același apel de metodă. Aceasta este o sursă comună a „InvaliduseOfMatcherSexception” [7] [8].

3. Limitări batjocoritoare: Mockito nu poate batjocori anumite metode precum `egals ()`, `hashCode ()`, sau metode finale. În timp ce potrivirile de argumente pot fi utilizate cu metode care pot fi batjocorite, acestea nu extind capacitatea de a batjocori aceste metode restrânse [3].

4. Tipuri de meciuri de argumente: Mockito oferă o varietate de potriviri de argumente încorporate (de exemplu, `anyint ()`, `anyString ()`, `isNull ()`), dar trebuie să alegeți tipul corect pentru argument. De exemplu, utilizarea „oricărei ()” cu un tip primitiv ar putea să nu funcționeze așa cum era de așteptat; În schimb, utilizați un mecir mai specific, cum ar fi „anyboolean ()` pentru parametrii booleani [7].

5. Matchers de argumente personalizate: în timp ce Mockito vă permite să creați potriviri personalizate folosind metoda `argthat (), implementarea interfeței` argumentMatcher` necesită o atenție atentă pentru a se asigura că potrivitorul se comportă așa cum se așteaptă în diferite scenarii [2] [4].

6. Integrare cu alte biblioteci: Când utilizați Mockito cu alte biblioteci precum Hamcrest, asigurați -vă că integrarea este gestionată în mod corespunzător. De exemplu, Sonarqube ar putea semnala anumite utilizări ale `argthat ()` cu hamcrest matchers ca fiind incorecte, chiar dacă sunt valabile [4].

În rezumat, în timp ce potrivitorii de argumente Mockito sunt versatile, utilizarea lor este limitată la contexte specifice și necesită consecvență în argumentele metodei. În plus, acestea nu depășesc limitările fundamentale ale Mockito cu privire la anumite metode sau clase.

Citări:
[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-ussage-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-potriviri
[8] https://www.baeldung.com/mockito-argument-matchers