Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Katere so glavne razlike med Mockito Matchers in Hamcrest Matchers


Katere so glavne razlike med Mockito Matchers in Hamcrest Matchers


Mockito Matchers in Hamcrest Matchers se v Javi uporabljata za ustvarjanje testnih trditev, vendar služijo različnim namenom in imajo različne značilnosti.

MOCKITO MATCHERS

MOCKITO MATCHERS se uporablja predvsem za nastavitev pričakovanj ali preverjanja pri delu s posmehljivimi predmeti. Ti Matcherji vrnejo vrsto predmeta, ki se ujema, kar jim omogoča, da se neposredno uporablja kot argumenti v klicih metod na posmehljivih predmetih. Na primer, `org.mockito.Matchers.any (Integer.class)` Vrne `Integer`, zaradi česar je primerna za uporabo v metodi, ki se ukvarja z metodo ali preverjanje, kot je` ko (mockfoo.getBarbyIndex (kateri koli (integer.class))) `[1].

MOCKITO MATCHERS so zasnovani tako, da brezhibno delujejo z Mockitovim posmehovalnim okvirom, kar vam omogoča, da določite prožna pričakovanja za klice metod na posmeh. Vendar se običajno ne uporabljajo z izjavami "AssertThat", ki so pogosteje povezane s Hamcrest.

Hamcrest Matchers

Po drugi strani so Hamcrest Matchers zasnovani tako, da jih je treba uporabiti z `assertTat` izjave za uveljavljanje pogojev v testih. Vrnejo objekt "Matcher", ki je predikat, ki ga je mogoče uporabiti za oceno, ali je stanje izpolnjen. Hamcrest Matchers so zelo prilagodljivi in ​​jih je mogoče kombinirati z logičnimi operaterji, kot so "allof", "anyOf" in "ne" za ustvarjanje zapletenih trditev [2] [3].

Hamcrest Matchers se široko uporabljajo v povezavi z Junit in drugimi testiranimi okviri za pisanje jasnih in berljivih testnih trditev. Zagotavljajo tekoči API, zaradi katerega je testna koda bolj samokumentirana in lažja za razumevanje. Na primer, `assertThat (" Pozdravljeni ", Encalto (" Pozdravljeni "))" jasno sporoča namen trditve [7].

Integracija med Mockito in Hamcrest

V primerih, ko želite uporabiti Hamcrest Matcher v kontekstu, ki zahteva mockito Matcher (npr. Stikanje ali preverjanje klica metode), Mockito ponuja metodo "ArgThat`. Ta metoda vam omogoča, da zavijete Hamcrest Matcher in ga uporabite kot Mockito Matcher. Na primer, `ko (mockfoo.getBarbydouble (argthat (cleteto (1,0, 0,001)))` uporablja Hamcrest Matcher, da določi pogoj za dvojno vrednost z neko natančnostjo [1] [5].

V Mockito 2 in pozneje se integracija s Hamcrest obravnava prek razreda "Mockitohamcrest", ki ponuja metodo "ArgThat`, posebej zasnovano za delo s Hamcrest Matchers [5] [10]. To ločevanje pomaga preprečiti različice konfliktov med Mockito in Hamcrest knjižnicami.

Če povzamemo, se Mockito Matchers uporabljajo predvsem za posmehovanje in trpljenje, medtem ko se Hamcrest Matchers uporabljajo za trditve. Obe lahko učinkovito uporabljamo v testih, tako da uporabimo metodo "Argthat` za vključitev Hamcrest Matchers v Mockito -ov posmehljivi okvir.

Navedbe:
[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