Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Er der nogen alternativer til Hamcrest, der fungerer bedre med Mockito


Er der nogen alternativer til Hamcrest, der fungerer bedre med Mockito


Når man arbejder med Mockito, bruges Hamcrest ofte til sine ekspressive matchere, hvilket forbedrer læsbarheden af ​​test. Der er dog alternativer, der kan fungere godt med Mockito, hver med deres egne styrker og svagheder.

Assertj

ASSIONJ er et populært alternativ til Hamcrest til at skrive påstande i enhedstest. Det giver en flydende API, som mange udviklere finder lettere at bruge og mere udtryksfulde end Hamcrest. ASSIONJs syntaks foretrækkes ofte for sin læsbarhed og evnen til let at oprette brugerdefinerede påstande. Mens ASSIONJ ikke direkte integreres med Mockito, som Hamcrest gør, kan det bruges sammen med Mockito til påstande, hvilket gør tests mere læsbare og vedligeholdelige. Assertj er imidlertid primært fokuseret på påstande snarere end de bredere matchende kapaciteter i Hamcrest [1] [3].

Sandhed

Sandheden er et andet påstandsbibliotek udviklet af Google. Det tilbyder en flydende API, der ligner ASSIONJ, men fokuserer mere på at yde bedre auto-kompletionsstøtte i IDE'er, hvilket kan være gavnligt for at opdage tilgængelige påstande. Sandheden er ikke så almindeligt brugt med Mockito som Hamcrest, men kan bruges til påstande i test. Ligesom ASSIONJ er sandheden mere fokuseret på påstande snarere end den generelle formål, som Hamcrest leverer [3].

Mockitos indbyggede matchere

Mockito leverer selv matchere, der kan bruges til stubbing og verificering af interaktioner med spottende objekter. Disse matchere returnerer den type, de matcher (f.eks. 'Enhver (heltal.class)' returnerer et 'heltal'), som er forskellig fra Hamcrest -matchere, der returnerer en 'matcher'. For at bruge Hamcrest-matchere med Mockito kan du bruge `argthat` eller` Mockitohamcrest.Argthat` til at konvertere en Hamcrest-matcher til en Mockito-kompatibel form [7].

Brugerdefinerede implementeringer

For scenarier, hvor du foretrækker ikke at bruge eksterne biblioteker, kan du implementere dine egne matchere eller påstande. Denne tilgang giver mulighed for fuld kontrol over opførsel og syntaks, men kræver større indsats og vedligeholdelse. Det anbefales typisk ikke, medmindre du har meget specifikke behov, der ikke er opfyldt af eksisterende biblioteker.

Konklusion

Mens Hamcrest er vidt brugt med Mockito på grund af dens fleksibilitet og udtryksevne, kan alternativer som ASSIONJ og sandhed forbedre påstandsdelen af ​​dine test. Hvis du leder efter noget, der integreres godt med Mockito til matchende formål, forbliver Hamcrest et stærkt valg, men du kan bruge dens matchere sammen med andre påstandenbiblioteker til en mere omfattende testoplevelse. I sidste ende afhænger valget af dine specifikke behov og præferencer med hensyn til læsbarhed, brugervenlighed og den type påstande eller matcher, du har brug for for at udføre i dine test.

Citater:
[1] https://www.reddit.com/r/java/komment
[2] https://www.javacodeegeeks.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/
)
)
[7] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
[8] https://stackoverflow.com/questions/12606196/what-is-the-alternative-to-sising-the-deprecated-hamcrest-metod-is