Når han jobber med Mockito, brukes Hamcrest ofte til sine uttrykksfulle matchere, noe som forbedrer lesbarheten av tester. Imidlertid er det alternativer som kan fungere godt med Mockito, hver med sine egne styrker og svakheter.
assertj
Assertj er et populært alternativ til Hamcrest for å skrive påstander i enhetstester. Det gir et flytende API som mange utviklere synes er enklere å bruke og mer uttrykksfulle enn Hamcrest. AssertJs syntaks er ofte foretrukket for lesbarhet og muligheten til enkelt å lage tilpassede påstander. Selv om Assertj ikke direkte integreres med Mockito som Hamcrest gjør, kan det brukes sammen med Mockito for påstander, noe som gjør tester mer lesbare og vedlikeholdbare. Assertj er imidlertid først og fremst fokusert på påstander snarere enn de bredere samsvarende mulighetene til Hamcrest [1] [3].
Sannhet
Sannhet er et annet påstandsbibliotek utviklet av Google. Det tilbyr en flytende API som ligner på Assertj, men fokuserer mer på å gi bedre støtte for automatisk fullførelse i IDE-er, noe som kan være fordelaktig for å oppdage tilgjengelige påstander. Sannheten er ikke så ofte brukt med Mockito som Hamcrest, men kan brukes til påstander i tester. I likhet med Assertj er sannheten mer fokusert på påstander i stedet for den generelle matchingen som Hamcrest gir [3].
Mockitos innebygde matchere
Mockito gir selv matchere som kan brukes til å stubbe og verifisere interaksjoner med spotte objekter. Disse matcherne returnerer typen de matcher (f.eks. `Any (heltall.class)` returnerer et `heltall '), som er forskjellig fra Hamcrest -matchere som returnerer en` matcher`. For å bruke Hamcrest Matchers med Mockito, kan du bruke `ArgThThat` eller 'Mockitohamcrest.argThat` for å konvertere en Hamcrest-matcher til en mockito-kompatibel form [7].
Tilpassede implementeringer
For scenarier der du foretrekker å ikke bruke eksterne biblioteker, kan du implementere dine egne matchere eller påstander. Denne tilnærmingen gir full kontroll over atferden og syntaks, men krever mer krefter og vedlikehold. Det anbefales vanligvis ikke med mindre du har veldig spesifikke behov som ikke blir oppfylt av eksisterende biblioteker.
Konklusjon
Mens Hamcrest er mye brukt med Mockito på grunn av dens fleksibilitet og uttrykksevne, kan alternativer som Assertj og Truth forbedre påstandsdelen av testene dine. Hvis du leter etter noe som integreres godt med Mockito for matchende formål, er Hamcrest fortsatt et sterkt valg, men du kan bruke matcherne sammen med andre påstandsbiblioteker for en mer omfattende testopplevelse. Til syvende og sist avhenger valget av dine spesifikke behov og preferanser angående lesbarhet, brukervennlighet og typen påstander eller matcher du trenger å utføre i testene dine.
Sitasjoner:[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/alternatives-to-sing-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-dings-the-driceated-hamcrest-metod-er