Het gebruik van Mockitohamcrest over traditionele Hamcrest -matchers biedt verschillende voordelen, met name bij het werken met Mockito voor het bespotten in eenheidstests. Hier zijn de belangrijkste voordelen:
1. Integratie met Mockito: Mockitohamcrest kunt u naadloos Hamcrest -matchers integreren met Mockito's Mocking Framework. Deze integratie is cruciaal voor het opzetten van stubs of het verifiëren van methodeaanroepen met complexe argumentatie -matching, die niet rechtstreeks wordt ondersteund door traditionele hamcrest -matchers alleen. U kunt bijvoorbeeld `mockitohamcrest.argthat gebruiken om een hamcrest -matcher om te zetten in een Mockito -matcher, zodat u de rijke set matchers van Hamcrest kunt gebruiken in Mockito -contexten [1] [10] [12].
2. Vermijding van versie -incompatibiliteit: Mockito is ontkoppeld van Hamcrest in versie 2.1.0 om incompatibiliteit van de versie te voorkomen die problemen hadden veroorzaakt voor gebruikers in het verleden. Mockitohamcrest biedt een manier om Hamcrest -matchers te gebruiken zonder strak gekoppeld te zijn aan een specifieke versie van Hamcrest, waardoor potentiële conflicten worden verminderd [1] [10].
3. Flexibiliteit in argumentatie -matching: Mockitohamcrest kunt u de flexibele en expressieve matchers van Hamcrest gebruiken om complexe argumentafweterscenario's te definiëren. Dit is met name handig wanneer u moet verifiëren dat een methode is aangeroepen met argumenten die overeenkomen met bepaalde voorwaarden, zoals tekenreeksen die specifieke substrings of getallen binnen een bepaald bereik bevatten [4] [12].
4. Verbeterde code voor leesbaarheid en zelfdocumentering: door Hamcrest-matchers te gebruiken via Mockitohamcrest, kunnen uw tests zelfdocumentering blijven en gemakkelijk te lezen zijn. De matchers drukken duidelijk de bedoeling van de test uit, waardoor ontwikkelaars gemakkelijker worden om te begrijpen wat wordt getest zonder extra opmerkingen te hebben [3] [9].
5. Betere foutmeldingen: wanneer beweringen mislukken, biedt Hamcrest gedetailleerde en zinvolle foutmeldingen, die aanzienlijk kunnen helpen bij het foutopsporings. Dit is vooral nuttig bij het gebruik van Mockitohamcrest, omdat het helpt vast te stellen waarom een nepverificatie is mislukt, waardoor het gemakkelijker is om problemen te diagnosticeren [3] [9].
6. Aanpassing en uitbreidbaarheid: Hamcrest's Matcher API kunt u aangepaste matchers maken die zijn afgestemd op uw specifieke testbehoeften. In combinatie met mockitohamcrest kunt u met deze uitbreidbaarheid meer gerichte en expressieve tests schrijven die precies overeenkomen met de logica van uw applicatie [6] [9].
Samenvattend biedt Mockitohamcrest een krachtige combinatie van de spotmogelijkheden van Mockito met de flexibele en expressieve matchers van Hamcrest, het verbeteren van testleesbaarheid, flexibiliteit en onderhoudbaarheid.
Citaten:[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-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/argumentmater.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