Att använda Mockitohamcrest över traditionella Hamcrest -matchare erbjuder flera fördelar, särskilt när du arbetar med Mockito för att håna i enhetstester. Här är de viktigaste fördelarna:
1. Integration med Mockito: MockitohamCrest låter dig sömlöst integrera Hamcrest -matchare med Mockitos hånliga ramverk. Denna integration är avgörande för att ställa in stubbar eller verifiera metodsamtal med komplex argumentmatchning, som inte direkt stöds av traditionella Hamcrest -matchare ensam. Till exempel kan du använda `mockitohamcrest.argThat` för att konvertera en Hamcrest -matcher till en Mockito -matcher, vilket gör att du kan använda Hamcrests rika uppsättning matchare i Mockito -sammanhang [1] [10] [12].
2. Undvikande av versionens oförenlighet: Mockito avkopplades från Hamcrest i version 2.1.0 för att undvika versionens kompatibilitet som hade orsakat problem för användare tidigare. Mockitohamcrest ger ett sätt att använda Hamcrest -matchare utan att vara tätt kopplade till en specifik version av Hamcrest, vilket minskar potentiella konflikter [1] [10].
3. Flexibilitet i argumentmatchning: Mockitohamcrest låter dig använda Hamcrest flexibla och uttrycksfulla matchare för att definiera komplexa argumentmatchande scenarier. Detta är särskilt användbart när du behöver verifiera att en metod kallades med argument som matchar vissa villkor, till exempel strängar som innehåller specifika underlag eller siffror inom ett visst intervall [4] [12].
4. Förbättrad läsbarhet och självdokumenteringskod: Genom att använda Hamcrest-matchare genom Mockitohamcrest kan dina tester förbli självdokumenterande och lättläst. Matcharna uttrycker tydligt avsikten med testet, vilket gör det lättare för utvecklare att förstå vad som testas utan att behöva ytterligare kommentarer [3] [9].
5. Bättre felmeddelanden: När påståenden misslyckas tillhandahåller Hamcrest detaljerade och meningsfulla felmeddelanden, vilket kan hjälpa till att felsöka. Detta är särskilt fördelaktigt när man använder Mockitohamcrest, eftersom det hjälper till att identifiera varför en hålig verifiering misslyckades, vilket gör det lättare att diagnostisera problem [3] [9].
6. Anpassning och utdragbarhet: Hamcrest's Matcher API låter dig skapa anpassade matchare skräddarsydda efter dina specifika testbehov. I kombination med MockitohamCrest, gör det här utdragbarheten att skriva mer riktade och uttrycksfulla tester som exakt matchar din applikations logik [6] [9].
Sammanfattningsvis erbjuder Mockitohamcrest en kraftfull kombination av Mockitos hånliga förmågor med Hamcrests flexibla och uttrycksfulla matchare, vilket förbättrar testläsbarhet, flexibilitet och underhållbarhet.
Citeringar:[1] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[2] https://stackoverflow.com/questions/20441594/mockito-and-hamcrest-how-to-verify--collection-argument
[3] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/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.javacodegeeks.com/2015/11/custom-hamcrest-matchers.html
[7] https://www.lambdatest.com/automation-testing-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