CollectionAssert in jUnit? CollectionAssert in jUnit? java java

CollectionAssert in jUnit?


Using JUnit 4.4 you can use assertThat() together with the Hamcrest code (don't worry, it's shipped with JUnit, no need for an extra .jar) to produce complex self-describing asserts including ones that operate on collections:

import static org.junit.Assert.assertThat;import static org.junit.matchers.JUnitMatchers.*;import static org.hamcrest.CoreMatchers.*;List<String> l = Arrays.asList("foo", "bar");assertThat(l, hasItems("foo", "bar"));assertThat(l, not(hasItem((String) null)));assertThat(l, not(hasItems("bar", "quux")));// check if two objects are equal with assertThat()// the following three lines of code check the same thing.// the first one is the "traditional" approach,// the second one is the succinct version and the third one the verbose one assertEquals(l, Arrays.asList("foo", "bar")));assertThat(l, is(Arrays.asList("foo", "bar")));assertThat(l, is(equalTo(Arrays.asList("foo", "bar"))));

Using this approach you will automagically get a good description of the assert when it fails.


Not directly, no. I suggest the use of Hamcrest, which provides a rich set of matching rules which integrates nicely with jUnit (and other testing frameworks)


Take a look at FEST Fluent Assertions. IMHO they are more convenient to use than Hamcrest (and equally powerful, extensible etc) and have better IDE support thanks to fluent interface. See https://github.com/alexruiz/fest-assert-2.x/wiki/Using-fest-assertions