Mockito Matchers a Hamcrest Matchers sa používajú v Jave na vytváranie testovacích tvrdení, ale slúžia rôznym účelom a majú zreteľné vlastnosti.
Mockito Matchers
Matchers Matchers sa primárne používajú na nastavenie očakávaní alebo overovaní pri práci s falošnými objektmi. Títo zápasníci vracajú typ zhodného objektu, ktorý ich umožňuje priamo používať ako argumenty v metódach volania na falošné objekty. Napríklad `org.mockito.matchers.ADE (Integer.Class)` Vráti „Integer`, vďaka čomu je vhodný na použitie v metóde strbbovanie alebo overovanie, ako napríklad`, kedy (Mockfoo.getBarbyIndex (integer.class)))) `[1].
Matchers Matchers sú navrhnutí tak, aby bezproblémovo pracovali s Mockinovmu zosmiešňujúcim rámcom, čo vám umožňuje definovať flexibilné očakávania týkajúce sa metód volania na falošné objekty. Spravidla sa však nepoužívajú s tvrdeniami, ktoré sú častejšie spojené s Hamcrestom.
Hamcrest Matchers
Hamcrest Matchers, na druhej strane, sú navrhnuté tak, aby sa používali s tvrdeniami „AssertTha“ na presadzovanie podmienok v testoch. Vracajú objekt „Matcher“, ktorý je predikátom, ktorý sa dá použiť na vyhodnotenie toho, či je podmienka splnená. Hamcrest Matchers sú vysoko flexibilní a môžu sa kombinovať pomocou logických operátorov ako „Allof`,` Anyof` a „nie“ na vytvorenie zložitých tvrdení [2] [3].
Hamcrest Matchers sa široko používajú v spojení s JUNIT a inými testovacími rámcami na písanie jasných a čitateľných testovacích tvrdení. Poskytujú plynulé rozhranie API, ktoré robí testovací kód viac sebakontroly a ľahšie pochopiteľné. Napríklad „ASSERTTHAT („ Ahoj “, EqualTo („ Hello “))„ jasne komunikuje zámer tvrdenia [7].
integrácia medzi Mockito a Hamcrest
V prípadoch, keď chcete použiť matura Hamcrest v kontexte, ktorý si vyžaduje Mockito Matcher (napr. Stubbovanie alebo overenie hovoru metódy) poskytuje Mockito metódu „argthat“. Táto metóda vám umožňuje zabaliť hamcrest matcher a použiť ho ako Mockito Matcher. Napríklad, `when (Mockfoo.getBarbyDouble (argthat (Closeto (1,0, 0,001)))))` používa hamcrest materser na určenie podmienky pre dvojitú hodnotu s určitou presnosťou [1] [5].
V Mockito 2 a neskôr sa integrácia s Hamcrestom zaobchádza prostredníctvom triedy „MockitoHamcrest“, ktorá poskytuje metódu „argthat“ špeciálne navrhnutú na prácu s Hamcrest Matchers [5] [10]. Toto oddelenie pomáha vyhnúť sa konfliktom verzií medzi knižnicami Mockito a Hamcrest.
Stručne povedané, matcheri Mockito sa primárne používajú na zosmiešnenie a strubovanie, zatiaľ čo na tvrdenia sa používajú zápasníci Hamcrest. Obidve sa môžu efektívne využívať pri testoch využitím metódy „argThat“ na integráciu Hamcrest Matchers do Mockinovho zosmiešňovacieho rámca.
Citácie:[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
Https://support.intershop.com/kb/go.php/a/enfdevdoc/pages/1827636063/guide+-+7.10+Migration+Mockito+1+ToMockito+2
[5] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[6] https://www.baelgn.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.argthathathathathat