Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Zijn er alternatieven voor hambest die beter werken met mockito


Zijn er alternatieven voor hambest die beter werken met mockito


Bij het werken met Mockito wordt Hamcrest vaak gebruikt voor zijn expressieve matchers, die de leesbaarheid van tests verbeteren. Er zijn echter alternatieven die goed kunnen werken met Mockito, elk met hun eigen sterke en zwakke punten.

Assertj

AssertJ is een populair alternatief voor Hamcrest voor het schrijven van beweringen in eenheidstests. Het biedt een vloeiende API die veel ontwikkelaars gemakkelijker te gebruiken en expressiever vinden dan Hamcrest. De syntaxis van AssertJ heeft vaak de voorkeur vanwege de leesbaarheid en de mogelijkheid om eenvoudig aangepaste beweringen te maken. Hoewel AssertJ niet direct integreert met Mockito zoals Hamcrest, kan het worden gebruikt naast Mockito voor beweringen, waardoor tests leesbaarder en onderhoudbaarder worden. AssertJ is echter voornamelijk gericht op beweringen in plaats van op de bredere matching -mogelijkheden van Hamcrest [1] [3].

Waarheid

Waarheid is een andere beweringbibliotheek ontwikkeld door Google. Het biedt een vloeiende API vergelijkbaar met AssertJ, maar richt zich meer op het bieden van betere ondersteuning voor auto-voltooiing bij IDE's, wat gunstig kan zijn voor het ontdekken van beschikbare beweringen. De waarheid wordt niet zo vaak gebruikt met Mockito als hambest, maar kan worden gebruikt voor beweringen in tests. Net als AssertJ is de waarheid meer gericht op beweringen dan op de algemene overeenkomst die Hamcrest biedt [3].

Mockito's ingebouwde matchers

Mockito zelf biedt matchers die kunnen worden gebruikt voor het stompen en verifiëren van interacties met nepobjecten. Deze matchers retourneren het type dat ze matchen (bijv. `Elke (integer.class)` retourneert een `integer`), die verschilt van hambest -matchers die een` matcher 'retourneren. Om Hamcrest-matchers met Mockito te gebruiken, kunt u `arghat` of` mockitohamcrest.argthat` gebruiken om een ​​hamcrest-matcher om te zetten in een mockito-compatibele vorm [7].

aangepaste implementaties

Voor scenario's waarbij u liever geen externe bibliotheken gebruikt, kunt u uw eigen matchers of beweringen implementeren. Deze aanpak zorgt voor volledige controle over het gedrag en de syntaxis, maar vereist meer inspanning en onderhoud. Het wordt meestal niet aanbevolen, tenzij u zeer specifieke behoeften heeft die niet door bestaande bibliotheken worden voldaan.

Conclusie

Hoewel Hamcrest veel wordt gebruikt met Mockito vanwege de flexibiliteit en expressiviteit, kunnen alternatieven zoals AssertJ en Truth het beweringdeel van uw tests verbeteren. Als u op zoek bent naar iets dat goed integreert met Mockito voor bijpassende doeleinden, blijft Hamcrest een sterke keuze, maar u kunt de matchers naast andere assertiebibliotheken gebruiken voor een uitgebreidere testervaring. Uiteindelijk hangt de keuze af van uw specifieke behoeften en voorkeuren met betrekking tot leesbaarheid, gebruiksgemak en het type beweringen of overeenkomsten die u in uw tests moet uitvoeren.

Citaten:
[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-andhamcrest.html
[6] https://softwareGineering.stackexchange.com/questions/447953/alternatieven-to-using-mock-libraries-such-as-mockito-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-the-the-deprecated-hamcrest-method-is