Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Millised on peamised erinevused Mockito matšide ja Hamcresti matšide vahel


Millised on peamised erinevused Mockito matšide ja Hamcresti matšide vahel


Java -s kasutatakse testide väidete loomiseks nii Mockito matšide kui ka Hamcresti matšideid, kuid need teenivad erinevaid eesmärke ja neil on erinevad omadused.

Mockito matšerid

Mockito Matchersit kasutatakse peamiselt ootuste või kontrollimise seadistamiseks, kui töötate mõnitavate objektidega. Need kokkulepped tagastavad sobitatava objekti tüübi, mis võimaldab neid kasutada otse argumentidena meetodikõnedes mõnitavate objektide kohta. Näiteks `org.mockito.matchers.any (täisarv.class)` tagastab "täisarvu", muutes selle sobivaks kasutamiseks meetodil koputamisel või kinnitamisel, näiteks kui "kui" (mockfoo.getbarbyIndex (suvaline (mis tahes (interger.class)))) `[1].

Mockito Matchers on loodud töötama sujuvalt Mockito pilkamisraamistikuga, mis võimaldab teil määratleda paindlikud ootused meetodikõnede jaoks mõnitavate objektide jaoks. Kuid tavaliselt ei kasutata neid väidetega, mida on sagedamini seotud Hamcrestiga.

Hamcresti matšid

Hamcresti matšid seevastu on mõeldud kasutamiseks koos väidetega testides tingimuste kinnitamiseks. Nad tagastavad objekti "Matcher", mis on predikaat, mida saab kasutada tingimuse täitmise hindamiseks. Hamcresti matšid on väga paindlikud ja neid saab kombineerida, kasutades loogilisi operaatoreid nagu "allof", `ayof" ja "mitte", et luua keerulisi väiteid [2] [3].

Hamcresti matšereid kasutatakse laialdaselt koos JUNITi ja muude testimisraamistikega, et kirjutada selgeid ja loetavaid testide väiteid. Need pakuvad sujuvat API-d, mis muudab testkoodi ise dokumenteerivamaks ja mõistlikumaks. Näiteks `AssertTHAT (" Tere ", Equalto (" Tere "))" edastab selgelt väite kavatsuse [7].

Mockito ja Hamcresti integreerimine

Juhtudel, kui soovite kasutada Hamcresti matši kontekstis, mis nõuab Mockito Matcherit (nt meetodikõne koristamine või kontrollimine), annab Mockito meetodi "argTat". See meetod võimaldab teil mässida Hamcresti matši ja kasutada seda Mockito Matcherina. Näiteks "millal (mockfoo.getbarbyDouble (argthat (clowto (1,0, 0,001)))))` kasutab Hamcresti matši, et täpsustada topeltväärtuse tingimus, millel on täpsus [1] [5].

Mockito 2 -s ja hiljem käsitletakse integreerimist Hamcrestiga klassi "Mockitohamcrest" kaudu, mis pakub "argTat" meetodit, mis on spetsiaalselt loodud töötama Hamcresti matšidega [5] [10]. See lahutamine aitab vältida Mockito ja Hamcresti raamatukogude vahelisi konflikte.

Kokkuvõtlikult kasutatakse Mockito matšereid peamiselt pilkamiseks ja kännuks, hamcresti matše kasutatakse väideteks. Mõlemat saab testides tõhusalt kasutada, võimendades meetodit "argTat", et integreerida Hamcresti matšid Mockito pilkamisraamistikku.

Tsitaadid:
]
]
[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-gachers
[7] https://automatenow.io/complete-guide-to-hamcrest-matchers/
]
[9] https://hamcrest.org/javahamcrest/tutorial
]