When checking if two objects obj1 and obj2 are equals, the "classic" JUnit way is to write something like:
import org.junit.Test; class Test @Test public void equalsTest(){ assertEquals(ob1, obj2); //is obj1 the expected or actual result ? //not clear without resorting to the javadoc } }
with Hamcrest - the test reads (almost) like plain ordinary english and it is easier to see that obj1 is the actual result and obj2 is the expected result:
import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; class Test{ @Test public void equalsTest(){ //asserts that the actual result is what's expected. assertThat (obj1, is(obj2)); } }
The above illustrates the use of the is() matcher, there are many other matchers to choose from... Just to name a few:
//hasEntry matcher Map aMap = new HashMap (); amap.put("test",123); assertThat (aMap, hasEntry("test",123); //greaterThan matcher assertThat(stuff.size(), greaterThan(0)); //combining is and not matchers assertThat (stuff.size(), is(not(0)))x //assert that an array contains certain elements String [] array1 =....; assertThat (array1, allOf(hasItemInArray("element1"), hasItemInArray("element2")));
No comments:
Post a Comment