Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kokie yra pagrindiniai skirtumai tarp „Mockito Matchers“ ir „Hamcrest Matchers“


Kokie yra pagrindiniai skirtumai tarp „Mockito Matchers“ ir „Hamcrest Matchers“


„Mockito“ žaidėjai ir „Hamcrest“ rungtynės yra naudojamos „Java“ bandymo teiginiams kurti, tačiau jie tarnauja skirtingiems tikslams ir pasižymi skirtingomis savybėmis.

„Mockito“ atitikmenys

„Mockito“ atitikmenys pirmiausia naudojami siekiant nustatyti lūkesčius ar patikrinimus dirbant su „Mock“ objektais. Šie atitikmenys grąžina suderinto objekto tipą, kuris leidžia juos tiesiogiai naudoti kaip argumentus metodo skambučiuose dėl pavyzdžių objektų. Pvz., `Org.mockito.Matchers.Any (integer.class)" Grąžina „sveikąjį skaičių“, todėl jis tinka naudoti metodu ar tikrinant, pavyzdžiui, `kai (Mockfoo.getBarbyIndex (bet kuris (integer.class)))` [1].

„Mockito“ atitikmenys yra skirti sklandžiai dirbti su „Mockito“ tyčiojimosi sistema, leidžiančia apibrėžti lankstus lūkesčius dėl metodo skambučio į „Mock“ objektus. Tačiau jie paprastai nėra naudojami su „tvirtinimu“ teiginiais, kurie yra labiau siejami su „Hamcrest“.

„Hamcrest Matchers“

Kita vertus, „Hamcrest Matchers“ yra skirti naudoti su „tvirtinimu“ teiginiais, patvirtinantiems sąlygas testuose. Jie grąžina „Mater“ objektą, kuris yra predikatas, kuris gali būti naudojamas įvertinti, ar įvykdyta sąlyga. „Hamcrest“ atitikmenys yra labai lankstūs ir gali būti sujungti naudojant loginius operatorius, tokius kaip „allof“, „Anyof“ ir „ne“, kad būtų galima sukurti sudėtingus teiginius [2] [3].

„Hamcrest“ atitikmenys yra plačiai naudojami kartu su „Junit“ ir kitomis bandymo sistemomis, kad būtų galima rašyti aiškius ir skaitomus bandymo tvirtinimus. Jie pateikia laisvą API, dėl kurio bandymo kodas tampa labiau savarankiškas ir lengviau suprantamas. Pavyzdžiui, „tvirtinti („ labas “,„ Equalto “(„ labas “))„ aiškiai perduoda teiginio ketinimą [7].

„Mockito“ ir „Hamcrest“ integracija

Tais atvejais, kai norite naudoti „Hamcrest Matcher“ kontekste, kuriam reikalingas „Mockito Matcher“ (pvz., Metodo skambučio kaupimas ar patikrinimas), „Mockito“ pateikia „Argthat“ metodą. Šis metodas leidžia apvynioti „Hamcrest“ atitiktį ir naudoti jį kaip „Mockito“ mačą. Pvz., „Kai (Mockfoo.getBarbyDouble“ (argthat (closeto (1.0, 0,001)))) „naudoja„ Hamcrest “atitiktį, kad nurodytų dvigubos vertės sąlygą su tam tikru tikslumu [1] [5].

„Mockito 2“ ir vėliau integracija su „Hamcrest“ vykdoma per „Mockitohamcrest“ klasę, kuri pateikia „argthat“ metodą, specialiai sukurtą dirbti su „Hamcrest“ rungtynėmis [5] [10]. Šis atsiejimas padeda išvengti versijų konfliktų tarp „Mockito“ ir „Hamcrest“ bibliotekų.

Apibendrinant galima pasakyti, kad „Mockito“ atitikmenys pirmiausia naudojami tyčiojimosi ir kibirams, o „Hamcrest“ atitikmenys yra naudojami tvirtinimams. Abu gali būti veiksmingai naudojami bandymuose, pasinaudojant „Argthat“ metodu, siekiant integruoti „Hamcrest“ atitikmenis į „Mockito“ tyčiojimosi sistemą.

Citatos:
[1] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tuitorial.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