I have a class List (EDIT: that I wrote myself), with method List.equals, so I want to run something like
List list1 = new List();
List list2 = new List();
assertTrue(list1.equals(list2));
So using matchers and assertThat, I thought maybe
assertThat(list1.equals(list2), is(true));
But this is getting pretty silly...EDIT: perhaps I can write my own matcher
Is there a better way to check if my equals method is working correctly?
This is with JUnit4.5
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 widely used framework for unit testing in the Java world. Hamcrest target is to make your tests easier to write and read. For this, it provides additional matcher classes which can be used in test for example written with JUnit. You can also define custom matcher implementations.
assertEquals() is the method of Assert class in JUnit, assertThat() belongs to Matchers class of Hamcrest. Both methods assert the same thing; however, hamcrest matcher is more human-readable. As you see, it is like an English sentence “Assert that actual is equal to the expected value”.
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
...
assertThat(list1, equalTo(list2));
assertEquals(list1, list2)
is the most straightforward way.
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