CollectionAssert in jUnit?
Is there a jUnit parallel to NUnit's CollectionAssert
?
Solution 1:
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.
Solution 2:
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)