Matchito Matchers i Hamcrest Matchers są używane w Javie do tworzenia twierdzeń testowych, ale służą różnym celom i mają wyraźne cechy.
Mocchito Matchers
Matchito Matchers są używane przede wszystkim do konfigurowania oczekiwań lub weryfikacji podczas pracy z próbnymi obiektami. Te dopasowawcy zwracają typ dopasowanego obiektu, który pozwala być używanym bezpośrednio jako argumenty w wywołań metod na próbnych obiektach. Na przykład, `org.mockito.matchers.any (Integer.Class)` Zwraca „Integer”, co czyni go odpowiednim do użytku w metodzie lub weryfikacji, na przykład (when (mockfoo.getBarbyIndEx (dowolny (Integer.class))))))) `[1].
Matchito Matchers są zaprojektowane tak, aby bezproblemowo pracować z kpiącym frameworkiem Mockito, umożliwiając definiowanie elastycznych oczekiwań dotyczących wywołania metod na próbnych obiektach. Jednak nie są one zwykle używane z `` oświadczenia, które są częściej powiązane z HAMCREST.
Hamcrest Matchers
Z drugiej strony dopasowywniki Hamcrest są zaprojektowane do użycia z `` `` `` `` `` `` asserttath '' '' 'do stwierdzenia warunków w testach. Zwracają obiekt „matcher”, który jest predykatem, który można wykorzystać do oceny, czy warunek jest spełniony. Matchery Hamcrest są bardzo elastyczne i można je łączyć przy użyciu operatorów logicznych, takich jak „allof`,` anaof` i `` not` w celu tworzenia złożonych twierdzeń [2] [3].
Matchery Hamcrest są szeroko stosowane w połączeniu z Junit i innymi ramami testowymi do pisania jasnych i czytelnych twierdzeń testowych. Zapewniają płynną interfejs API, który sprawia, że kod testowy jest bardziej samokontentowany i łatwiejszy do zrozumienia. Na przykład `` assertthat („Hello”, EqualTo („Hello”)) `` wyraźnie przekazuje intencję twierdzenia [7].
Integracja między Mockito i Hamcrest
W przypadkach, w których chcesz użyć dopasowcy Hamcrest w kontekście, który wymaga maste -mechera (np. Stupbing lub weryfikacji wywołania metody), Mockleto zapewnia metodę „argThat”. Ta metoda pozwala owinąć dopasowanie Hamcrest i używać go jako paszyka Mocchito. Na przykład, `WHER (MOCKFOO.GETBARBYDOUND (argthat (Closeto (1.0, 0,001))))` Używa dopasowania Hamcresta do określania warunku podwójnej wartości z pewną precyzją [1] [5].
W Mockito 2 i nowszym integracja z Hamcrestem jest obsługiwana przez klasę „Mockitohamcrest”, która zapewnia metodę „argThat, specjalnie zaprojektowaną do pracy z mecherami Hamcrest [5] [10]. To oddzielenie pomaga uniknąć konfliktów wersji między bibliotekami Mocchito i Hamcrest.
Podsumowując, dopasowania Mockito są wykorzystywane przede wszystkim do kpiny i kruszowania, podczas gdy dopasowawcy Hamcrest są używane do twierdzeń. Oba mogą być skutecznie stosowane w testach, wykorzystując metodę „argthatt” do integracji dopasowań Hamcresta z kpiącym ramą Mockito.
Cytaty:[1] https://stackoverflow.com/questions/8348046/mockitos-matcher-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+1+Mocto+2
[5] https://site.mockito.org/javadoc/current/org/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/jahammcrest/tutorial
[10] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.argthat