Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Existujú nejaké alternatívy k Hamcrestovi, ktoré lepšie pracujú s Mockitom


Existujú nejaké alternatívy k Hamcrestovi, ktoré lepšie pracujú s Mockitom


Pri práci s Mockitom sa Hamcrest často používa pre svojich expresívnych zápasov, čo zvyšuje čitateľnosť testov. Existujú však alternatívy, ktoré môžu dobre fungovať s Mockitom, z ktorých každá má vlastné silné a slabé stránky.

assertJ

AssertJ je populárnou alternatívou k Hamcrestovi na písanie tvrdení v jednotkových testoch. Poskytuje plynulé API, ktoré mnohí vývojári považujú za ľahšie a výraznejšie ako Hamcrest. Syntax AssertJ je často uprednostňovaný pre jeho čitateľnosť a schopnosť ľahko vytvárať vlastné tvrdenia. Aj keď AssertJ sa priamo netýka s Mockito, ako to robí Hamcrest, môže sa použiť spolu s Mockito na tvrdenia, čím sa testy čitateľnejšie a udržiavajú. AssertJ sa však primárne zameriava skôr na tvrdenia ako na širšie zodpovedajúce schopnosti Hamcrest [1] [3].

pravda

Pravda je ďalšia knižnica tvrdenia vyvinutá spoločnosťou Google. Ponúka plynulé rozhranie API podobné spoločnosti AssertJ, ale viac sa zameriava na poskytovanie lepšej podpory automatického dokončenia v IDE, čo môže byť prospešné pre objavovanie dostupných tvrdení. Pravda sa nepoužíva tak bežne s Mockitom ako Hamcrest, ale môže sa použiť na tvrdenia v testoch. Rovnako ako AssertJ, pravda sa viac zameriava skôr na tvrdenia ako na zhodu so všeobecným účtom, ktorú Hamcrest poskytuje [3].

Vstavané zápasníci

Mockito

Samotný Mockito poskytuje zápasníkov, ktorí sa dajú použiť na strpbovanie a overovanie interakcií s falošnými objektmi. Títo zápasníci vracajú typ, ktorý zodpovedajú (napr. „Akýmkoľvek (Integer.Class)` Vráti „celé číslo“), čo sa líši od Hamcrest Matchers, ktoré vracajú `matcher`. Ak chcete používať Hamcrest Matchers s Mockitom, môžete použiť „argthat“ alebo `MockitoHamcrest.Argthat` na konverziu hamcrestovho zápasníka na forma kompatibilnú z Mocito [7].

Vlastné implementácie

Pre scenáre, v ktorých radšej nepoužívate externé knižnice, môžete implementovať svojich vlastných zápasov alebo tvrdenia. Tento prístup umožňuje úplnú kontrolu nad správaním a syntaxou, ale vyžaduje viac úsilia a údržby. Zvyčajne sa neodporúča, pokiaľ nemáte veľmi špecifické potreby, ktoré existujú existujúcimi knižnicami.

Záver

Zatiaľ čo Hamcrest sa široko používa s Mockitom kvôli svojej flexibilite a expresivite, alternatívy ako AssertJ a pravda môžu zvýšiť tvrdenie vašich testov. Ak hľadáte niečo, čo sa dobre integruje s Mockitom na účely zhody, Hamcrest zostáva silnou voľbou, ale jeho zápasníkov môžete použiť spolu s ďalšími knižnicami tvrdenia na komplexnejší testovací zážitok. V konečnom dôsledku voľba závisí od vašich konkrétnych potrieb a preferencií týkajúcich sa čitateľnosti, ľahkého používania a typu tvrdení alebo zápasov, ktoré potrebujete na vykonanie vašich testov.

Citácie:
[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/junnit-5-tutorial-part-1-init-testing-with-jith-junnit-5-mockito-and-hamcrest.html
[6] https://softwareEngineering.stackexchange.com/questions/447953/Alternative-ousing-using-mock-library-such-as-micko-in-in-init-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-method-is