Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Care sunt principalele diferențe între Mockito Matchers și Hamcrest Matchers


Care sunt principalele diferențe între Mockito Matchers și Hamcrest Matchers


Mockito Matchers și Hamcrest Matchers sunt ambele utilizate în Java pentru crearea afirmațiilor testelor, dar servesc scopuri diferite și au caracteristici distincte.

Mockito Matchers

Mockito Matchers sunt utilizate în principal pentru a stabili așteptări sau verificări atunci când lucrați cu obiecte batjocoritoare. Aceste potriviri returnează tipul obiectului potrivit, ceea ce le permite să fie utilizate direct ca argumente în apelurile metodei pe obiecte batjocoritoare. De exemplu, `org.mockito.Matchers.Ay (Integer.Class)` returnează un `Integer`, făcându -l potrivit pentru utilizare în metodă Stubbing sau Verificare, cum ar fi„ când (Mockfoo.GetBarByIndex (orice (Integer.Class)))) `[1].

Mocker -ul Mockito sunt proiectate să funcționeze perfect cu cadrul batjocoritor al lui Mockito, permițându -vă să definiți așteptările flexibile pentru apelurile metodelor pe obiecte Mock. Cu toate acestea, acestea nu sunt utilizate în mod obișnuit cu declarații `Asesertthat`, care sunt mai frecvent asociate cu Hamcrest.

Hamcrest Matchers

Pe de altă parte, Hamcrest Matchers sunt proiectate pentru a fi utilizate cu declarații `AsertThat's pentru afirmarea condițiilor în teste. Ei returnează un obiect `matcher`, care este un predicat care poate fi utilizat pentru a evalua dacă o afecțiune este îndeplinită. Matcher -urile Hamcrest sunt extrem de flexibile și pot fi combinate folosind operatori logici precum `allof`,` anyof`, și „nu” pentru a crea afirmații complexe [2] [3].

Matcher -urile Hamcrest sunt utilizate pe scară largă împreună cu JUnit și alte cadre de testare pentru a scrie afirmații de testare clare și lizibile. Acestea oferă o API fluentă care face codul de testare mai auto-document și mai ușor de înțeles. De exemplu, `assertThat („ Hello ”, egalto („ Hello ”))„ comunică clar intenția afirmației [7].

Integrarea între Mockito și Hamcrest

În cazurile în care doriți să utilizați un Matcher Hamcrest într -un context care necesită un Mockito Matcher (de exemplu, Stubbing sau Verificarea unui apel de metodă), Mockito oferă metoda „ArgThat”. Această metodă vă permite să înfășurați un Hamcrest Matcher și să o utilizați ca un Mockito Matcher. De exemplu, `când (Mockfoo.GetBarbyDouble (Argthat (Closeto (1.0, 0.001)))))` folosește un Matcher Hamcrest pentru a specifica o condiție pentru o valoare dublă cu o anumită precizie [1] [5].

În Mockito 2 și mai târziu, integrarea cu Hamcrest este gestionată prin clasa „Mockitohamcrest”, care oferă o metodă „ArgThat” concepută special pentru a funcționa cu Hamcrest Matchers [5] [10]. Această decuplare ajută la evitarea conflictelor de versiune între bibliotecile Mockito și Hamcrest.

În rezumat, Mockito Matchers sunt utilizate în principal pentru batjocură și înțepături, în timp ce Hamcrest Matchers sunt utilizate pentru afirmații. Ambele pot fi utilizate eficient împreună în teste prin utilizarea metodei „ArgThat” de a integra potrivitoarele Hamcrest în cadrul batjocoritor al lui Mockito.

Citări:
[1] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tutorial.html
[3] https://www.vogella.com/tutorials/hamcrest/article.html
[4] https://support.intershop.com/kb/go.php/a/enfdevdoc/pages/1827636063/guide+-+7.10+migration+mockito+1+to+mockito+2
[5] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[6] https://www.baeldung.com/hamcrest-text-matchers
[7] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[8] https://www.scalatest.org/scaladoc/3.0.7/org/scalatest/matchers.html
[9] https://hamcrest.org/javahamcrest/tutorial
[10] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.argthat