A Mockito -val való együttműködés során a Hamcrest -et gyakran használják kifejező csatlakozóihoz, amelyek javítják a tesztek olvashatóságát. Vannak azonban olyan alternatívák, amelyek jól működhetnek a Mockito -val, mindegyiknek saját erősségei és gyengeségei vannak.
assertj
Az AssertJ a Hamcrest népszerű alternatívája az állítások egységtesztekben történő írására. Ez olyan folyékony API -t biztosít, amelyet sok fejlesztő könnyebben használhatónak és kifejezőbbnek talál, mint a Hamcrest. Az AssertJ szintaxisát gyakran részesítik előnyben az olvashatósága és az egyéni állítások egyszerű létrehozásának képessége. Noha az assertJ nem integrálódik közvetlenül a Mockito -val, mint a Hamcrest, addig a Mockito mellett használható állításokhoz, a teszteket olvashatóbbá és karbantarthatóbbá teszi. Az assertJ azonban elsősorban az állításokra összpontosít, nem pedig a Hamcrest szélesebb illesztési képességeire [1] [3].
Igazság
Az igazság egy újabb állítási könyvtár, amelyet a Google fejlesztett ki. Az AssertJ-hez hasonló folyékony API-t kínál, de inkább arra összpontosít, hogy az IDES-ben jobb automatikus kiegészítő támogatást nyújtson, ami hasznos lehet a rendelkezésre álló állítások felfedezéséhez. Az igazságot nem olyan gyakran használják a Mockito -val, mint a Hamcrest, de felhasználhatók a tesztek állítására. Az assertJ-hez hasonlóan az igazság inkább az állításokra összpontosít, nem pedig a Hamcrest által nyújtott általános célú illesztésre [3].
Mockito beépített matcherjei
Maga a Mockito biztosítja azokat a gyufákat, amelyek felhasználhatók a modell objektumokkal való interakciókkal és ellenőrzésre. Ezek a mérkőzések visszaküldnek az egyeztető típusú (pl. "Bármilyen (egész számú)" visszaad egy "egész számot), amely különbözik a Hamcrest Matcher -től, amely visszatér a" Matcher "-re. A Hamcrest Muchers Mockito használatához használhatja az „Argthat” vagy a „Mockitohamcrest.Argthat” használatát egy Hamcrest-csatlakozó konvertálása Mockito-kompatibilis formává [7].
Egyéni megvalósítások
A forgatókönyvekhez, ahol inkább nem használja a külső könyvtárakat, megvalósíthatja saját mérkőzéseket vagy állításokat. Ez a megközelítés lehetővé teszi a viselkedés és a szintaxis teljes ellenőrzését, de további erőfeszítéseket és karbantartást igényel. Általában nem ajánlott, hacsak nincs olyan specifikus igénye, amelyet a meglévő könyvtárak nem felelnek meg.
Következtetés
Míg a Hamcrest -et széles körben használják a Mockito -val rugalmasságának és kifejezőképességének köszönhetően, az olyan alternatívák, mint az AssertJ és az Truth, javíthatják a tesztek állításának részét. Ha valami olyan dolgot keres, amely jól integrálódik a Mockito -hoz megfelelő célokra, akkor a Hamcrest továbbra is erős választás, de más állati könyvtárak mellett használhatja a meccseket egy átfogóbb tesztelési élmény érdekében. Végül a választás az Ön specifikus igényeitől és preferenciáitól függ az olvashatóság, a könnyű használat szempontjából, valamint az állítások vagy egyezések típusától, amelyeket a tesztekben elvégeznie kell.
Idézetek:[1] https://www.reddit.com/r/java/comments/nj7dvd/who_here_are_using_the_hamcrest_api_and_why/
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tutorial.html
[3] https://truth.dev/comparison.html
[4] https://www.reddit.com/r/javahelp/comments/oqz8cn/unit_testing_with_mockito_framework_why_do_we/
[5] https://www.infoworld.com/article/2257253/junit-5-tutorial-Part-1-unit-testing-with-junit-5-mockito-and-hamcrest.html
[6] https://softwareEngineering.stackexchange.com/questions/447953/alternives-to-using-mock-libraries-such-asmockito-in-unit-testing
[7] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
[8] https://stackoverflow.com/questions/12606196/what-is-the-alternative-to-using-the-deprecated-hamcrest-sod-is