Brug af Mockitohamcrest over traditionelle Hamcrest -matchere giver flere fordele, især når man arbejder med Mockito til hån i enhedstest. Her er de vigtigste fordele:
1. Integration med Mockito: Mockitohamcrest giver dig mulighed for problemfrit at integrere Hamcrest -matchere med Mockitos hånlige rammer. Denne integration er afgørende for at oprette stubber eller verificere metodekald med komplekse argumentmatchning, som ikke er direkte understøttet af traditionelle Hamcrest -matchere alene. For eksempel kan du bruge `Mockitohamcrest.Argthat` til at konvertere en Hamcrest -matcher til en Mockito -matcher, hvilket gør det muligt for dig at bruge Hamcrests rige sæt matchere i Mockito -kontekster [1] [10] [12].
2. Undgåelse af versionskompatibiliteter: Mockito blev afkoblet fra Hamcrest i version 2.1.0 for at undgå inkompatibiliteter, der havde forårsaget problemer for brugere i fortiden. Mockitohamcrest giver en måde at bruge Hamcrest -matchere uden at være tæt koblet til en bestemt version af Hamcrest, hvilket reducerer potentielle konflikter [1] [10].
3. fleksibilitet i argumentmatchning: Mockitohamcrest giver dig mulighed for at bruge Hamcrests fleksible og udtryksfulde matchere til at definere komplekse argument matchende scenarier. Dette er især nyttigt, når du skal verificere, at der blev kaldt en metode med argumenter, der matcher visse betingelser, såsom strenge, der indeholder specifikke understrenge eller tal inden for et bestemt interval [4] [12].
4. Forbedret læsbarhed og selvdokumenteringskode: Ved at bruge Hamcrest-matchere gennem Mockitohamcrest kan dine test forblive selvdokumentering og let at læse. Matcherne udtrykker tydeligt testen med testen, hvilket gør det lettere for udviklere at forstå, hvad der testes uden at have brug for yderligere kommentarer [3] [9].
5. Bedre fejlmeddelelser: Når påstande mislykkes, giver Hamcrest detaljerede og meningsfulde fejlmeddelelser, som kan hjælpe med fejlfinding markant. Dette er især fordelagtigt, når man bruger Mockitohamcrest, da det hjælper med at identificere, hvorfor en hånlig verifikation mislykkedes, hvilket gjorde det lettere at diagnosticere problemer [3] [9].
6. Tilpasning og udvidelighed: Hamcrests Matcher API giver dig mulighed for at oprette brugerdefinerede matchere, der er skræddersyet til dine specifikke testbehov. Når det kombineres med Mockitohamcrest, giver denne udvidelighed dig mulighed for at skrive mere målrettede og udtryksfulde tests, der præcist matcher din applikations logik [6] [9].
Sammenfattende tilbyder Mockitohamcrest en stærk kombination af Mockitos hånlige kapaciteter med Hamcrests fleksible og udtryksfulde matchere, hvilket forbedrer testlæsbarhed, fleksibilitet og vedligeholdelighed.
Citater:[1] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[2] https://stackoverflow.com/questions/20441594/mockito-and-hamcrest-how-to-verify-invocation-of-conction-argument
[3] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[4] https://www.lambdatest.com/automation-test-advisor/selenium/metods/org.mockito.hamcrest.mockitohamcrest.mockitohamcrest
[5] https://www.javadoc.io/doc/org.mockito/mockito-core/2.2.9/org/mockito/argumentmatcher.html
[6] https://www.javacodeegeeks.com/2015/11/custom-hamcrest-matchers.html
[7] https://www.lambdatest.com/automation-test-advisor/selenium/classes/org.mockito.hamcrest.mockitohamcrest
[8] https://site.mockito.org/javadoc/current/index.html?org%2fmockito%2fargumentmatcher.html
[9] https://www.vogella.com/tutorials/hamcrest/article.html
[10] https://weblab.tudelft.nl/docs/mockito/3.10/org/mockito/hamcrest/mockitohamcrest.html
[11] https://truth.dev/comparison.html
[12] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher