Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jaké jsou hlavní rozdíly mezi Mockito Matchers a Hamcrest Matchers


Jaké jsou hlavní rozdíly mezi Mockito Matchers a Hamcrest Matchers


Mockito Matchers a Hamcrest Matchers se používají v Javě pro vytváření testovacích tvrzení, ale slouží různým účelům a mají odlišné vlastnosti.

Mockito Matchers

Mockito Matchers se primárně používají k nastavení očekávání nebo ověření při práci s falešnými objekty. Tito zápasů vrací typ odpovídajícího objektu, což jim umožňuje používat přímo jako argumenty při volání metody na falešné objekty. Například `org.mockito.matchers.any (integer.class)` vrací „integer“, takže je vhodné pro použití při svržení metody nebo ověření, jako je `when (mockfoo.getBarbyIndex (jakýkoli (Integer.class))` [1].

Mockito Matchers jsou navrženy tak, aby bez problémů pracovaly s Mockitoovým zesměšňujícím rámcem, což vám umožňuje definovat flexibilní očekávání pro volání metod na falešné objekty. Obvykle se však nepoužívají s prohlášeními o `assertthat, které jsou běžněji spojeny s Hamcrestem.

Hamcrest Matchers

Hamcrest Matchers, na druhé straně, jsou navrženy pro použití s ​​`asertantThat" prohlášeními pro prosazování podmínek v testech. Vrátí objekt „Matcher“, což je predikát, který lze použít k vyhodnocení, zda je podmínka splněna. Hamcrest Matchers jsou vysoce flexibilní a lze je kombinovat pomocí logických operátorů, jako jsou `allof`,` anyof` a `not` pro vytváření složitých tvrzení [2] [3].

Hamcrest Matchers se široce používají ve spojení s Junitem a dalšími testovacími rámcemi, aby psali jasná a čitelná testovací tvrzení. Poskytují plynulé rozhraní API, které usnadňuje samoobslužnější a snadnější pochopení. Například „Assertthat („ Hello “, Equalto („ Hello “))` jasně komunikuje záměr tvrzení [7].

Integrace mezi Mockito a Hamcrest

V případech, kdy chcete použít Hamcrest Matcher v kontextu, který vyžaduje mockito porovnávač (např. Stubbing nebo ověření volání metody), Mockito poskytuje metodu „argthat“. Tato metoda vám umožňuje zabalit Hamcrest Matcher a použít jej jako MOCKITO MOSTERSER. Například `whin (mockfoo.getBarbydouble (argthat (Cloveto (1.0, 0,001)))` používá Hamcrest Matcher k určení podmínky pro dvojitou hodnotu s určitými přesnostmi [1] [5].

V Mockito 2 a novějším je integrace s Hamcrestem zpracována prostřednictvím třídy „Mockitohamcrest“, která poskytuje metodu „argthat“ speciálně navrženou pro práci s Hamcrest Matchers [5] [10]. Toto oddělení pomáhá vyhnout se konfliktům verzí mezi Mockito a Hamcrest Library.

Stručně řečeno, Mockito Matchers se primárně používají pro zesměšňování a strmívání, zatímco Hamcrest Matchers se používají pro tvrzení. Oba lze společně použít společně v testech využitím metody „argthat“ pro integraci Hamcrest Matchers do Mockitoova zesměšňujícího rámce.

Citace:
[1] https://stackoverflow.com/questions/8348046/mockitos-macher-vs-hamcrest-matcher
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tutorial.html
[3] https://www.vogella.com/tutorials/hamcrest/article.html
[4] https://support.intershop.com/kb/go.php/a/enfdevdoc/pages/1827636063/guide+-+7.10+migration+mockito+to+mockito+2
[5] https://site.mockito.org/javadoc/current/mockito/hamcrest/mockitohamcrest.html
[6] https://www.baeldung.com/hamcrest-text-matchers
[7] https://automateNow.io/Complete-guide-to-hamcrest-Matchers/
[8] https://www.scalatest.org/scaladoc/3.0.7/org/scalatest/matchers.html
[9] https://hamcrest.org/javahamcrest/tutorial
[10] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.argthat