Package org.mockito.hamcrest
Class MockitoHamcrest
java.lang.Object
org.mockito.hamcrest.MockitoHamcrest
Allows matching arguments with hamcrest matchers.
Requires hamcrest on classpath,
Mockito does not depend on hamcrest!
Note the NullPointerException auto-unboxing caveat described below.
Before implementing or reusing an existing hamcrest matcher please read
how to deal with sophisticated argument matching in
ArgumentMatcher
.
Mockito 2.1.0 was decoupled from Hamcrest to avoid version incompatibilities
that have impacted our users in past. Mockito offers a dedicated API to match arguments
via ArgumentMatcher
.
Hamcrest integration is provided so that users can take advantage of existing Hamcrest matchers.
Example:
import static org.mockito.hamcrest.MockitoHamcrest.argThat; //stubbing when(mock.giveMe(argThat(new MyHamcrestMatcher()))); //verification verify(mock).giveMe(argThat(new MyHamcrestMatcher()));NullPointerException auto-unboxing caveat. In rare cases when matching primitive parameter types you *must* use relevant intThat(), floatThat(), etc. method. This way you will avoid
NullPointerException
during auto-unboxing.
Due to how java works we don't really have a clean way of detecting this scenario and protecting the user from this problem.
Hopefully, the javadoc describes the problem and solution well.
If you have an idea how to fix the problem, let us know via the mailing list or the issue tracker.
By default, a matcher passed to a varargs parameter will match against the first element in the varargs array.
To match against the raw varargs array pass the type of the varargs parameter to argThat(Matcher, Class)
For example, to match any number of String
values:
import static org.hamcrest.CoreMatchers.isA; import static org.mockito.hamcrest.MockitoHamcrest.argThat; // Given: void varargMethod(String... args); //stubbing when(mock.varargMethod(argThat(isA(String[].class), String[].class)); //verification verify(mock).giveMe(argThat(isA(String[].class), String[].class));
- Since:
- 2.1.0
-
Method Summary
Modifier and TypeMethodDescriptionstatic <T> T
Allows matching arguments with hamcrest matchers.static <T> T
Allows matching arguments with hamcrest matchers.static boolean
booleanThat
(Matcher<Boolean> matcher) Enables integrating hamcrest matchers that match primitiveboolean
arguments.static byte
Enables integrating hamcrest matchers that match primitivebyte
arguments.static char
Enables integrating hamcrest matchers that match primitivechar
arguments.static double
doubleThat
(Matcher<Double> matcher) Enables integrating hamcrest matchers that match primitivedouble
arguments.static float
Enables integrating hamcrest matchers that match primitivefloat
arguments.static int
Enables integrating hamcrest matchers that match primitiveint
arguments.static long
Enables integrating hamcrest matchers that match primitivelong
arguments.static short
Enables integrating hamcrest matchers that match primitiveshort
arguments.
-
Method Details
-
argThat
Allows matching arguments with hamcrest matchers. See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matches- Returns:
null
or default value for primitive (0, false, etc.)- Since:
- 2.1.0
-
argThat
Allows matching arguments with hamcrest matchers. This variant can be used to pass an explicittype
, which can be useful to provide a matcher that matches against all elements in a varargs parameter. See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matchestype
- the type the matcher matches.- Returns:
null
or default value for primitive (0, false, etc.)- Since:
- 5.0.0
-
charThat
Enables integrating hamcrest matchers that match primitivechar
arguments. Note thatargThat(org.hamcrest.Matcher<T>)
will not work with primitivechar
matchers due toNullPointerException
auto-unboxing caveat. See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matches- Returns:
0
.
-
booleanThat
Enables integrating hamcrest matchers that match primitiveboolean
arguments. Note thatargThat(org.hamcrest.Matcher<T>)
will not work with primitiveboolean
matchers due toNullPointerException
auto-unboxing caveat. See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matches- Returns:
false
.
-
byteThat
Enables integrating hamcrest matchers that match primitivebyte
arguments. Note thatargThat(org.hamcrest.Matcher<T>)
will not work with primitivebyte
matchers due toNullPointerException
auto-unboxing caveat. * See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matches- Returns:
0
.
-
shortThat
Enables integrating hamcrest matchers that match primitiveshort
arguments. Note thatargThat(org.hamcrest.Matcher<T>)
will not work with primitiveshort
matchers due toNullPointerException
auto-unboxing caveat. * See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matches- Returns:
0
.
-
intThat
Enables integrating hamcrest matchers that match primitiveint
arguments. Note thatargThat(org.hamcrest.Matcher<T>)
will not work with primitiveint
matchers due toNullPointerException
auto-unboxing caveat. * See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matches- Returns:
0
.
-
longThat
Enables integrating hamcrest matchers that match primitivelong
arguments. Note thatargThat(org.hamcrest.Matcher<T>)
will not work with primitivelong
matchers due toNullPointerException
auto-unboxing caveat. * See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matches- Returns:
0
.
-
floatThat
Enables integrating hamcrest matchers that match primitivefloat
arguments. Note thatargThat(org.hamcrest.Matcher<T>)
will not work with primitivefloat
matchers due toNullPointerException
auto-unboxing caveat. * See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matches- Returns:
0
.
-
doubleThat
Enables integrating hamcrest matchers that match primitivedouble
arguments. Note thatargThat(org.hamcrest.Matcher<T>)
will not work with primitivedouble
matchers due toNullPointerException
auto-unboxing caveat. * See examples in javadoc forMockitoHamcrest
class- Parameters:
matcher
- decides whether argument matches- Returns:
0
.
-