Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Melyek a fő különbségek a Mockito -matcherek és a Hamcrest Matchers között


Melyek a fő különbségek a Mockito -matcherek és a Hamcrest Matchers között


A Mockito -matchereket és a Hamcrest meccseket egyaránt használják a Java -ban tesztmegállapodások létrehozására, ám ezek különböző célokat szolgálnak, és különálló tulajdonságokkal rendelkeznek.

Mockito Matchers

A Mockito -matchereket elsősorban az elvárások vagy ellenőrzések beállítására használják, amikor a álobjektumokkal dolgoznak. Ezek a mérkőzések visszatérnek az egyeztetett objektum típusát, amely lehetővé teszi, hogy közvetlenül használják a MOCK -objektumok módszerhívásai argumentumokként. Például a „org.mockito.matchers.any (egész számú)` „egész számot” ad vissza, így alkalmassá teszi a módszerrel vagy az ellenőrzésre való felhasználást, például a „mikor (Mockfoo.getBarbyIndex (bármelyik (egész szám))))` [1].

A Mockito -matchereket úgy tervezték, hogy zökkenőmentesen működjenek a Mockito gúnyolódási keretével, lehetővé téve a rugalmas elvárások meghatározását a MOCK -objektumok módszerhívásaira. Ezeket azonban általában nem használják a „állítást” állításokkal, amelyek gyakrabban kapcsolódnak a Hamcresthez.

Hamcrest gyufák

A Hamcrest Matcher -t viszont úgy tervezték, hogy „állítólagos állításokkal” használják a tesztek feltételeinek érvényesítésére. Visszaadnak egy „Matcher” objektumot, amely egy predikátum, amely felhasználható annak felmérésére, hogy egy feltétel teljesül -e. A Hamcrest gyufák nagyon rugalmasak, és olyan logikai operátorokkal kombinálhatók, mint a „allof”, a „bármiof” és a „nem” komplex állítások létrehozására [2] [3].

A Hamcrest -matchereket széles körben használják a JUNIT és más tesztelési keretekkel együtt, hogy világos és olvasható teszteléseket írjanak. Olyan folyékony API-t biztosítanak, amely a tesztkódot öndokumentálja és könnyebben érthetőbbé teszi. Például, a "hisi (" hello ", equalto (" hello "))" egyértelműen közli az állítás szándékát [7].

Integráció a Mockito és a Hamcrest között

Azokban az esetekben, amikor egy Hamcrest -matcher -et szeretne használni olyan környezetben, amelyhez Mockito -matcher (például egy módszerhívás megsemmisítése vagy ellenőrzése), a Mockito biztosítja az „Argthat” módszert. Ez a módszer lehetővé teszi a Hamcrest Matcher csomagolását, és Mockito -matcherként történő felhasználását. Például: `mikor (mockfoo.getBarbydouble (argthat (Closeto (1,0, 0,001)))` egy Hamcrest -matcher -et használ, hogy meghatározzon egy kettős értéket, bizonyos pontossággal [1] [5].

A Mockito 2 -ben és később a Hamcrest -rel való integrációt a „Mockitohamcrest” osztályon keresztül kezelik, amely kifejezetten a Hamcrest Matchers -szel való együttműködésre tervezett „Argthat” módszert biztosít [10]. Ez a leválasztás segít elkerülni a verziókonfliktusokat a Mockito és a Hamcrest könyvtárak között.

Összefoglalva: a Mockito -matchereket elsősorban gúnyolódáshoz és daganatokhoz használják, míg a Hamcrest Matcher -et állításokhoz használják. Mindkettő hatékonyan használható a tesztekben az „Argthat” módszer kiaknázásával a Hamcrest -matcherek integrálására a Mockito gúnyolódási keretébe.

Idézetek:
[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+mockito+1+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.calatest.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