Mockito sērkociņus un Hamcrest Matchers tiek izmantoti Java, lai izveidotu testa apgalvojumus, taču tie kalpo dažādiem mērķiem un tiem ir atšķirīgas īpašības.
Mockito sērkociņi
Mockito sērkociņus galvenokārt izmanto, lai izveidotu cerības vai verifikācijas, strādājot ar izspēles objektiem. Šie samierinātāji atgriež atbilstošo objekta veidu, kas ļauj tos tieši izmantot kā argumentus metodes, izsauc izspēles objektus. Piemēram, `org.mockito.Matchers.anany (Integer.class)` atgriež “veselu skaitli”, padarot to piemērotu lietošanai metodē, kas stubbing vai verifikācijā, piemēram, `kad (mockfoo.getBarByIndex (jebkura (IntEger.class)))` [1].
Mockito Matchers ir paredzēts, lai nemanāmi darbotos ar Mockito ņirgāšanās sistēmu, ļaujot definēt elastīgas cerības uz metodes izsaukumiem uz izspēles objektiem. Tomēr tos parasti neizmanto ar “apgalvojumiem”, kas biežāk ir saistīti ar Hamcrest.
Hamcrest Matchers
No otras puses, Hamcrest Matchers ir paredzēts lietošanai ar "apgalvojumiem" paziņojumos par nosacījumu apstiprināšanu testos. Viņi atdod objektu “Matcher”, kas ir predikāts, ko var izmantot, lai novērtētu, vai stāvoklis ir izpildīts. Hamcrest Matchers ir ļoti elastīgi, un tos var apvienot, izmantojot loģiskus operatorus, piemēram, “Allof”, `anyof` un` nav` radīt sarežģītus apgalvojumus [2] [3].
Hamcrest Matchers tiek plaši izmantots kopā ar Junit un citiem testēšanas sistēmām, lai uzrakstītu skaidrus un lasāmus testa apgalvojumus. Tie nodrošina tekošu API, kas padara testa kodu vairāk pašdokumentējošāku un vieglāk saprotamu. Piemēram, "AssertThat (" sveiks ", vienāds (" Sveiki "))" skaidri paziņo apgalvojuma nodomu [7].
integrācija starp Mockito un Hamcrest
Gadījumos, kad vēlaties izmantot Hamcrest Matcher kontekstā, kuram nepieciešams Mockito Matcher (piemēram, metodes izsaukuma izkārtošana vai pārbaude), Mockito nodrošina “Argthat” metodi. Šī metode ļauj ietīt Hamcrest Matcher un izmantot to kā Mockito Matcher. Piemēram, `kad (mockfoo.getBarBydouble (argthat (Closeto (1,0, 0,001)))))` izmanto Hamcrest Matcher, lai norādītu nosacījumu divkāršai vērtībai ar zināmu precizitāti [1] [5].
Mockito 2 un vēlāk integrācija ar Hamcrest tiek apstrādāta caur “Mockitohamcrest” klasi, kas nodrošina “Argthat” metodi, kas īpaši paredzēta darbam ar Hamcrest Matchers [5] [10]. Šī atsaistīšana palīdz izvairīties no versijas konfliktiem starp Mockito un Hamcrest bibliotēkām.
Rezumējot, Mockito Matchers galvenokārt tiek izmantoti ņirgāšanās un stūbēšanai, savukārt Hamcrest Matchers tiek izmantoti apgalvojumiem. Abas var efektīvi izmantot kopā testos, izmantojot “Argthat” metodi, lai integrētu Hamcrest Matchers Mockito ņirgāšanās sistēmā.
Atsauces:[1] https://stackoverflow.com/questions/8348046/mockitos-satcher-vs-hamcrest-sacher
[2] https://www.javacodegeks.com/2015/11/hamcrest-satchers-tutorial.html
[3] https://www.vogella.com/tutorials/hamcrest/article.html
.
[5] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[6] https://www.baeldung.com/hamcrest-text-stacters
[7] https://automatenow.io/complete-guide-to-hamcrest-satchers/
[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