Použití Mockitohamcrest nad tradičními Hamcrest Matchers nabízí několik výhod, zejména při práci s Mockito pro zesměšňování v jednotkových testech. Zde jsou klíčové výhody:
1. Integrace s Mockito: Mockitohamcrest vám umožňuje hladce integrovat Hamcrest Matchers s Mockito's Mocking Framework. Tato integrace je zásadní pro nastavení pahýlů nebo ověřování metod volání se složitým porovnáním argumentů, které nejsou přímo podporovány tradičními tradičními Hamcrest Matchers. Například můžete použít `mockitohamcrest.argthat` k přeměně Hamcrest Matcher na Mockito Matcher, což vám umožní používat Hamcrestovu bohatou sadu zápasů v kontextech Mockito [1] [10] [12].
2. Vyhýbání se verzi neslučitelnosti: Mockito bylo od Hamcrestu odděleno ve verzi 2.1.0, aby se zabránilo nekompatibilitě verze, která v minulosti způsobila problémy pro uživatele. Mockitohamcrest poskytuje způsob, jak používat Hamcrest Matchers, aniž by byl pevně spojen s konkrétní verzí Hamcrestu, čímž se snižoval potenciální konflikty [1] [10].
3. Flexibilita v porovnávání argumentů: Mockitohamcrest vám umožňuje použít flexibilní a expresivní zápasky Hamcrestu k definování složitých scénářů porovnávání argumentů. To je zvláště užitečné, když potřebujete ověřit, že byla volána metoda s argumenty, které odpovídají určitým podmínkám, jako jsou řetězce obsahující specifické podřezavky nebo čísla v určitém rozmezí [4] [12].
4. Vylepšená čitelnost a kód dokumentace: pomocí Hamcrest Matchers prostřednictvím Mockitohamcrestu mohou vaše testy zůstat samo-dokumentování a snadno čitelné. Porovnávatelé jasně vyjadřují záměr testu, což vývojářům usnadňuje pochopení toho, co se testuje, aniž by potřebovali další komentáře [3] [9].
5. Lepší chybové zprávy: Když selhávají tvrzení, Hamcrest poskytuje podrobné a smysluplné chybové zprávy, které mohou výrazně pomoci při ladění. To je obzvláště výhodné při používání Mockitohamcrest, protože to pomáhá zjistit, proč simulované ověření selhalo, což usnadňuje diagnostiku problémů [3] [9].
6. Přizpůsobení a rozšiřitelnost: Hamcrest's Matcher API vám umožňuje vytvářet vlastní porovnávače přizpůsobené vašim konkrétním testovacím potřebám. V kombinaci s Mockitohamcrestem vám tato rozšiřitelnost umožňuje psát cílenější a expresivnější testy, které přesně odpovídají logice vaší aplikace [6] [9].
Stručně řečeno, Mockitohamcrest nabízí silnou kombinaci Mockitoových zesměšňovacích schopností s flexibilními a expresivními zápasky Hamcrestu, zvyšováním čitelnosti testů, flexibilitou a udržovatelnosti.
Citace:[1] https://site.mockito.org/javadoc/current/mockito/hamcrest/mockitohamcrest.html
[2] https://stackoverflow.com/questions/20441594/mockito-and-hamcrest-how-to-verify-invocation-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/classs/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/compaparison.html
[12] https://stackoverflow.com/questions/8348046/mockitos-macher-vs-hamcrest-matcher