I can't understand how JUnit 4.8 should work with Hamcrest matchers. There are some matchers defined inside junit-4.8.jar
in org.hamcrest.CoreMatchers
. At the same time there are some other matchers in hamcrest-all-1.1.jar
in org.hamcrest.Matchers
. So, where to go? Shall I explicitly include hamcrest JAR into the project and ignore matchers provided by JUnit?
In particular, I'm interested in empty()
matcher and can't find it in any of these jars. I need something else? :)
And a philosophical question: why JUnit included org.hamcrest
package into its own distribution instead of encouraging us to use original hamcrest library?
Hamcrest is the well-known framework used for unit testing in the Java ecosystem. It's bundled in JUnit and simply put, it uses existing predicates – called matcher classes – for making assertions.
Hamcrest is a framework that assists writing software tests in the Java programming language. It supports creating customized assertion matchers ('Hamcrest' is an anagram of 'matchers'), allowing match rules to be defined declaratively. These matchers have uses in unit testing frameworks such as JUnit and jMock.
If you're using a Hamcrest with a version greater or equal than 1.2, then you should use the junit-dep.jar
. This jar has no Hamcrest classes and therefore you avoid classloading problems.
Since JUnit 4.11 the junit.jar
itself has no Hamcrest classes. There is no need for junit-dep.jar
anymore.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With